国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

微信小程序開發(fā)文檔 / 微信小程序API 繪圖

微信小程序API 繪圖

wx.createContext()


創(chuàng)建并返回繪圖上下文context對象。

context

context只是一個記錄方法調用的容器,用于生成記錄繪制行為的actions數(shù)組。context跟<canvas/>不存在對應關系,一個context生成畫布的繪制動作數(shù)組可以應用于多個<canvas/>。

// 假設頁面上有3個畫布
var canvas1Id = 3001;
var canvas2Id = 3002;
var canvas3Id = 3003;

var context = wx.createContext();

[canvas1Id, canvas2Id, canvas3Id].forEach(function (id) {
  context.clearActions();
  // 在context上調用方法
  wx.drawCanvas({
    canvasId: id,
    actions: context.getActions();
  });
});

context對象的方法列表:

方法參數(shù)說明
getActions獲取當前context上存儲的繪圖動作
clearActions清空當前的存儲繪圖動作
變形  
scale 對橫縱坐標進行縮放
rotate 對坐標軸進行順時針旋轉
translate 對坐標原點進行縮放
save保存當前坐標軸的縮放、旋轉、平移信息
restore恢復之前保存過的坐標軸的縮放、旋轉、平移信息
繪制  
clearRect 在給定的矩形區(qū)域內,清除畫布上的像素
fillText 在畫布上繪制被填充的文本
drawImage 在畫布上繪制圖像
fill對當前路徑進行填充
stroke對當前路徑進行描邊
路徑  
beginPath開始一個路徑
closePath關閉一個路徑
moveTo 把路徑移動到畫布中的指定點,但不創(chuàng)建線條。
lineTo 添加一個新點,然后在畫布中創(chuàng)建從該點到最后指定點的線條。
rect 添加一個矩形路徑到當前路徑。
arc 添加一個弧形路徑到當前路徑,順時針繪制。
quadraticCurveTo 創(chuàng)建二次方貝塞爾曲線
bezierCurveTo 創(chuàng)建三次方貝塞爾曲線
樣式  
setFillStyle 設置填充樣式
setStrokeStyle 設置線條樣式
setShadow 設置陰影
setFontSize 設置字體大小
setLineCap 設置線條端點的樣式
setLineJoin 設置兩線相交處的樣式
setLineWidth 設置線條寬度
setMiterLimit 設置最大傾斜

方法詳解:

scale

在調用scale()方法后,之后創(chuàng)建的路徑其橫縱坐標會被縮放。多次調用scale,倍數(shù)會相乘。

QQ截圖20170208133838.png

//scale.js
<!--scale.wxml --> <canvas canvas-id="1" />
Page({
  onReady:function(e){
    var context = wx.createContext();
    context.rect(5,5,25,15)
    context.stroke();
    context.scale(2,2); //再放大2倍
    context.rect(5,5,25,15);
    context.stroke();
    context.scale(2,2); //再放大2倍
    context.rect(5,5,25,15)
    context.stroke();
    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261030525317.png

rotate

以原點為中心,原點可以用translate方法修改。順時針旋轉當前坐標軸。多次調用rotate,旋轉的角度會疊加。

參數(shù)類型范圍說明
rotateNumberdegrees * Math.PI/180;degrees范圍為0~360旋轉角度,以弧度計

示例代碼:

//rotate.js
Page({
  onReady:function(e){
    var context = wx.createContext();
    context.rect(50,50,200,200)
    context.stroke();
    context.rotate(5*Math.PI/180)
    context.rect(50,50,200,200)
      context.stroke();
      context.rotate(5*Math.PI/180)
      context.rect(50,50,200,200)
      context.stroke()

    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261031438320.png

translate

對當前坐標系的原點(0, 0)進行變換,默認的坐標系原點為頁面左上角。

參數(shù)類型范圍說明
xNumber 水平坐標平移量
yNumber 豎直坐標平移量

示例代碼:

//translate.js
Page({
  onReady:function(){
    var context = wx.createContext();

    context.rect(50,50,200,200)
    context.stroke()
    context.translate(50,50)
    context.rect(50,50,200,200)
    context.stroke();

    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261031553071.png


clearRect

清除畫布上在該矩形區(qū)域內的內容

參數(shù)類型范圍說明
xNumber 矩形區(qū)域左上角的x坐標
yNumber 矩形區(qū)域左上角的y坐標
widthNumber 矩形區(qū)域的寬度
heightNumber 矩形區(qū)域的高度

示例代碼:

//clearrect.js
Page({
  onReady:function(){
    var context = wx.createContext();

    context.rect(50,50,200,200)
    context.fill()
    context.clearRect(100,100,50,50)

    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261032093621.png

drawImage

繪制圖像,圖像保持原始尺寸。

參數(shù)類型范圍說明
imageResourceString通過chooseImage得到一個文件路徑或者一個項目目錄內的圖片所要繪制的圖片資源
xNumber 圖像左上角的x坐標
yNumber 圖像左上角的y坐標

示例:

//drawimage.js
Page({
  onReady:function(e){
    var context = wx.createContext();
    wx.chooseImage({
      success:function(res){
        context.drawImage(res.tempFilePaths[0],0,0)
        wx.drawCanvas({
          canvasId:1,
          actions:context.getActions()
        });
      }
    })
  }
})

201609261032277489.png

fillText

在畫布上繪制被填充的文本。

參數(shù)類型范圍說明
textString 在畫布上輸出的文本
xNumber 繪制文本的左上角x坐標位置
yNumber 繪制文本的左上角y坐標位置

示例代碼:

//filltext.js
Page({
  onReady:function(){
    var context = wx.createContext();

    context.setFontSize(14)
    context.fillText("MINA",50,50)
    context.moveTo(0,50)
    context.lineTo(100,50)
    context.stroke();

    context.setFontSize(20)
    context.fillText("MINA",100,100)
    context.moveTo(0,100)
    context.lineTo(200,100)
    context.stroke();
    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261032388289.png


beginPath

開始創(chuàng)建一個路徑,需要調用fill或者stroke才會使用路徑進行填充或描邊。同一個路徑內的多次setFillStyle、setStrokeStyle、setLineWidth等設置,以最后一次設置為準。

closePage

關閉一個路徑。

moveTo

把路徑移動到畫布中的指定點,不創(chuàng)建線條。

QQ截圖20170208134100.png

lineTo

在當前位置添加一個新點,然后在畫布中創(chuàng)建從該點到最后指定點的路徑。

參數(shù)類型范圍說明
xNumber 目標位置的x坐標
yNumber 目標位置的y坐標
rect

添加一個矩形路徑到當前路徑。

QQ截圖20170208134149.png

arc

添加一個弧形路徑到當前路徑,順時針繪制。

QQ截圖20170208134201.png
quadraticCurveTo

創(chuàng)建二次貝塞爾曲線路徑。

QQ截圖20170208134211.png

bezierCurveTo

創(chuàng)建三次方貝塞爾曲線路徑。

QQ截圖20170208134225.png

setFillStyle

設置純色填充。

設置顏色為填充樣式

參數(shù)類型范圍說明
colorString'rgb(255, 0, 0)'或'rgba(255, 0, 0, 0.6)'或'#ff0000'格式的顏色字符串設置為填充樣式的顏色
setStrokeStyle

設置純色描邊,參數(shù)同setFillStyle。

示例代碼:

//setfillstyle.js
Page({
  onReady:function(e){
    var context = wx.createContext();

    context.setFillStyle("#ff00ff");
    context.setStrokeStyle("#00ffff");

    context.rect(50,50,100,100)
    context.fill()
    context.stroke()
    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261032547620.png

setShadow

設置陰影樣式。

QQ截圖20170208134252.png
setFontSize

設置字體的字號。

QQ截圖20170208134707.png
setLineWidth

設置線條的寬度。

QQ截圖20170208134718.png
setLineCap

設置線條的結束端點樣式。

QQ截圖20170208134736.png
setLineJoin

設置兩條線相交時,所創(chuàng)建的拐角類型。

QQ截圖20170208134745.png
setMiterLimit

設置最大斜接長度,斜接長度指的是在兩條線交匯處內角和外角之間的距離。 當setLineJoin為'miter'時才有效。超過最大傾斜長度的,連接處將以lineJoin為bevel來顯示

參數(shù)類型范圍說明
miterLimitNumber 最大斜接長度

示例代碼:下載

//line.js
Page({
  onReady:function(e){
    var context = wx.createContext();

    context.setLineWidth(10);
    context.setLineCap("round")
    context.setLineJoin("miter");
    context.setMiterLimit(10);
    context.moveTo(20,20);
    context.lineTo(150,27);
    context.lineTo(20,54);
    context.stroke();

    context.beginPath();

    context.setMiterLimit(3);
    context.moveTo(20,70);
    context.lineTo(150,77);
    context.lineTo(20,104);
    context.stroke();

    wx.drawCanvas({
      canvasId:1,
      actions:context.getActions()
    });
  }
})

201609261033171009.png


wx.drawCanvas(OBJECT)

OBJECT參數(shù)說明:

QQ截圖20170208134815.png

示例:下載

<!--canvas.wxml--><canvas cavas-id="firstCanvas" />
// index.js
Page({
  canvasIdErrorCallback: function (e) {

    console.error(e.detail.errMsg);
  },
  onReady: function (e) {

    //使用wx.createContext獲取繪圖上下文context
    var context = wx.createContext();

    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();  

    //調用wx.drawCanvas,通過canvasId指定在哪張畫布上繪制,通過actions指定繪制行為
    wx.drawCanvas({
      canvasId: 'firstCanvas',
      actions: context.getActions() //獲取繪圖動作數(shù)組
    });
  }
});