微信小程序 canvas教程 - 1

2019-05-29  本文已影响0人  narcissus灬

一、canvas组件

test.wxml 中添加 canvas 组件

<canvas canvas-id='canvas-demo' class='demo'></canvas>
// canvas-id:必须填写

二、绘图

test.js 中进行绘图

let context = ex.createCanvasContext('canvas-demo')   // 为canvas-id = 'canvas-demo' 创建一个绘图上下文 CanvasContext 对象

1、CanvasContext.setFillStyle(color)

设置填充色

2、CanvasContext.fill()

对当前路径中的内容进行填充。默认的填充色为黑色。

注意:如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。
fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去。

3、CanvasContext.setStrokeStyle(color)

设置描边色

4、CanvasContext.stroke()

画出当前路径的边框。默认颜色色为黑色。

stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去。

5、CanvasContext.beginPath()

开始创建一个路径。需要调用 fill 或者 stroke 才会使用路径进行填充或描边

6、CanvasContext.closePath()

关闭一个路径。会连接起点和终点。如果关闭路径后没有调用 fill 或者 stroke 并开启了新的路径,那之前的路径将不会被渲染。

7、CanvasContext.moveTo(x, y)

把路径移动到画布中的指定点,不创建线条。用 stroke 方法来画线条

8、CanvasContext.draw(reserve, callback)

将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。

三、图形

1、字

a、CanvasContext.fillText(text, x, y, maxWidth)

在画布上绘制被填充的文本

b、CanvasContext.setFontSize(fontSize)

设置字体的字号

c、CanvasContext.setTextAlign(align)

设置文字的对齐

d、CanvasContext.setTextBaseline(textBaseline)

设置文字的竖直对齐

2、圆、弧

a、CanvasContext.arc(x, y, r, sAngle, eAngle, counterclockwise)

创建一条弧线
创建一个圆可以指定起始弧度为 0,终止弧度为 2 * Math.PI。
用 stroke 或者 fill 方法来在 canvas 中画弧线。

ctx.arc(100, 75, 50, 0, Math.PI, true)    // 绘制一个上半圆
ctx.setFillStyle('#EEEEEE')      // 设置内部填充色
ctx.fill()    // 对当前路径中的内容进行填充。默认的填充色为黑色。如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充。
ctx.draw()  // 将之前在绘图上下文中的描述(路径、变形、样式)画到 canvas 中。

3、矩形

a、CanvasContext.rect(x, y, width, height)

创建一个矩形路径。需要用 fill或者 stroke 方法将矩形真正的画到 canvas

ctx.rect(10, 10, 150, 75)
ctx.setFillStyle('red')
ctx.fill()
ctx.draw()

b、CanvasContext.fillRect(x, y, width, height)

填充一个矩形。用 setFillStyle 设置矩形的填充色,如果没设置默认是黑色。

ctx.setFillStyle('red')
ctx.fillRect(10, 10, 150, 75)
ctx.draw()

c、CanvasContext.strokeRect(number x, number y, number width, number height)

画一个矩形(非填充)。 用 setStrokeStyle 设置矩形线条的颜色,如果没设置默认是黑色。

ctx.setStrokeStyle('red')
ctx.strokeRect(10, 10, 150, 75)
ctx.draw()

4、线

a、CanvasContext.lineTo(x, y)

增加一个新点,然后创建一条从上次指定点到目标点的线。用 stroke 方法来画线条

ctx.moveTo(0,0)
ctx.lineTo(100,100)
ctx.stroke()
ctx.draw()

b、绘制一个正方形,且4条边颜色不同

    ctx.beginPath()
    ctx.setStrokeStyle('#f00')
    ctx.moveTo(20,20)
    ctx.lineTo(120,20)
    ctx.stroke()

    ctx.beginPath()
    ctx.setStrokeStyle('#0f0')
    ctx.moveTo(120, 20)
    ctx.lineTo(120, 120)
    ctx.stroke()

    ctx.beginPath()
    ctx.setStrokeStyle('#00f')
    ctx.moveTo(120, 120)
    ctx.lineTo(20, 120)
    ctx.stroke()

    ctx.beginPath()
    ctx.setStrokeStyle('#f0f')
    ctx.moveTo(20, 120)
    ctx.lineTo(20, 20)
    ctx.stroke()

    ctx.draw()

c、绘制一个三角形,且填充颜色

    ctx.setFillStyle('#ff0')
    // ctx.setStrokeStyle('#f00')    // 设置边框颜色
    ctx.moveTo(20,20)
    ctx.lineTo(20,120)
    ctx.lineTo(120,120)
    ctx.lineTo(20,20)
    // ctx.stroke()    // 绘制边框
    ctx.fill()
    ctx.draw()

5、CanvasContext.setShadow(offsetX, offsetY, blur, color)

设定阴影样式

    ctx.setFillStyle('#f00')
    ctx.setShadow(0,0,50,'#f00')
    ctx.fillRect(50,50,100,50)
    ctx.draw()

5、图片

a、CanvasContext.drawImage(imageResource, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)

四、渐变色

1、CanvasContext.createLinearGradient(x0, y0, x1, y1)

创建一个线性的渐变颜色。返回的CanvasGradient对象需要使用 CanvasGradient.addColorStop() 来指定渐变点,至少要两个。

    // 创建一个CanvasGradient对象
    let grd = ctx.createLinearGradient(0, 0, 200, 0)
    grd.addColorStop(0, '#f00')
    grd.addColorStop(1, '#0f0')
    ctx.setFillStyle(grd)
    ctx.fillRect(10, 10, 150, 80)
    ctx.draw()

2、CanvasContext.createCircularGradient(x, y, r)

创建一个圆形的渐变颜色。起点在圆心,终点在圆环。返回的CanvasGradient对象需要使用 CanvasGradient.addColorStop()来指定渐变点,至少要两个。

    let grd = ctx.createCircularGradient(100, 100, 50)
    grd.addColorStop(0, 'red')
    grd.addColorStop(1, 'white')
    ctx.setFillStyle(grd)
    ctx.arc(100,100,75,0,2*Math.PI)
    ctx.fill()
    ctx.draw()

小程序canvas官方地址

上一篇 下一篇

猜你喜欢

热点阅读