1. 程式人生 > >微信小程式畫布 canvas

微信小程式畫布 canvas

canvas

畫布。

屬性名 型別 預設值 說明
canvas-id String   canvas 元件的唯一識別符號
disable-scroll Boolean false 當在 canvas 中移動時且有繫結手勢事件時,禁止螢幕滾動以及下拉重新整理
bindtouchstart EventHandle   手指觸控動作開始
bindtouchmove EventHandle   手指觸控後移動
bindtouchend EventHandle   手指觸控動作結束
bindtouchcancel EventHandle   手指觸控動作被打斷,如來電提醒,彈窗
bindlongtap EventHandle   手指長按 500ms 之後觸發,觸發了長按事件後進行移動不會觸發螢幕的滾動
binderror EventHandle   當發生錯誤時觸發 error 事件,detail = {errMsg: 'something wrong'}

注:

  1. canvas標籤預設寬度300px、高度225px

  2. 同一頁面中的canvas-id不可重複,如果使用一個已經出現過的canvas-id,該canvas標籤對應的畫布將被隱藏並不再正常工作

示例程式碼:

<!-- canvas.wxml -->
<canvas style="width: 300px; height: 200px;" canvas-id="firstCanvas"></canvas
>
<!-- 當使用絕對定位時,文件流後邊的canvas的顯示層級高於前邊的canvas--> <canvas style="width: 400px; height: 500px;" canvas-id="secondCanvas"></canvas> <!-- 因為canvas-id與前一個canvas重複,該canvas不會顯示,並會發送一個錯誤事件到AppService --> <canvas style="width: 400px; height: 500px;" canvas-id="secondCanvas" binderror="canvasIdErrorCallback"></canvas>
// canvas.js
Page({
  canvasIdErrorCallback: function (e) {
    console.error(e.detail.errMsg)
  },
  onReady: function (e) {
    //使用wx.createContext獲取繪圖上下文context
    var context = wx.createCanvasContext('firstCanvas')

    context.setStrokeStyle("#00ff00")
    context.setLineWidth(5)
    context.rect(0,0,200,200)
    context.stroke()
    context.setStrokeStyle ("#ff0000")
    context.setLineWidth(2)
    context.moveTo(160,100)
    context.arc(100,100,60,0,2*Math.PI,true)
    context.moveTo(140,100)
    context.arc(100,100,40,0,Math.PI,false)
    context.moveTo(85,80)
    context.arc(80,80,5,0,2*Math.PI,true)
    context.moveTo(125,80)
    context.arc(120,80,5,0,2*Math.PI,true)
    context.stroke()
    context.draw()
  }
})

相關api:wx.createCanvasContext


Bug & Tip

  1. tip:canvas元件是由客戶端建立的原生元件,它的層級是最高的。
  2. tip: 請勿在scroll-view中使用canvas元件。
  3. tip:css動畫對canvas元件無效。