平台差异说明

填充颜色。用法同 CanvasContext.setFillStyle()

CanvasContext.strokeStyle string

边框颜色。用法同 。

CanvasContext.shadowOffsetX number

阴影相对于形状在水平方向的偏移

CanvasContext.shadowOffsetY number

阴影相对于形状在竖直方向的偏移

CanvasContext.shadowColor number

阴影的颜色

CanvasContext.shadowBlur number

阴影的模糊级别

CanvasContext.lineWidth number

线条的宽度。用法同 CanvasContext.setLineWidth()

CanvasContext.lineCap number

线条的端点样式。用法同 。

CanvasContext.lineJoin number

线条的交点样式。用法同 CanvasContext.setLineJoin()

CanvasContext.miterLimit number

最大斜接长度。用法同 。

CanvasContext.lineDashOffset number

虚线偏移量,初始值为0

CanvasContext.font string

当前字体样式的属性。符合 CSS font 语法 的 DOMString 字符串,至少需要提供字体大小和字体族名。默认值为 10px sans-serif。

CanvasContext.globalAlpha number

全局画笔透明度。范围 0-1,0 表示完全透明,1 表示完全不透明。

CanvasContext.globalCompositeOperation string

在绘制新形状时应用的合成操作的类型。目前安卓版本只适用于 填充块的合成,用于 stroke 线段的合成效果都是 source-over

目前支持的操作有

  • 5+App和H5端:source-over、destination-over、source-in、destination-in、source-out、destination-out、source-atop、destination-atop、lighter、darker、xor、copy
  • 微信小程序安卓端:xor, source-over, source-atop, destination-out, lighter, overlay, darken, lighten, hard-light
  • 微信小程序iOS端:xor, source-over, source-atop, destination-over, destination-out, lighter, multiply, overlay, darken, lighten, color-dodge, color-burn, hard-light, soft-light, difference, exclusion, saturation, luminosity方法

平台差异说明

5+AppH5微信小程序支付宝小程序百度小程序头条小程序

CanvasContext.arc

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

参数

参数类型说明
xNumber圆的x坐标
yNumber圆的y坐标
rNumber圆的半径
sAngleNumber起始弧度,单位弧度(在3点钟方向)
eAngleNumber终止弧度
counterclockwiseBoolean可选。指定弧度的方向是逆时针还是顺时针。默认是false,即顺时针。

示例代码

针对 arc(100, 75, 50, 0, 1.5 * Math.PI)的三个关键坐标如下:

  • 绿色: 圆心 (100, 75)
  • 红色: 起始弧度 (0)
  • 蓝色: 终止弧度 (1.5 * Math.PI)

CanvasContext.arcTo

根据控制点和半径绘制圆弧路径。

  1. CanvasContext.arcTo(x1, y1, x2, y2, radius)

参数

属性值类型说明
x1Number第一个控制点的 x 轴坐标
y1Number第一个控制点的 y 轴坐标
x2Number第二个控制点的 x 轴坐标
y2Number第二个控制点的 y 轴坐标
radiusNumber圆弧的半径

CanvasContext.beginPath

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

Tip: 在最开始的时候相当于调用了一次 beginPath()Tip: 同一个路径内的多次setFillStyle()、``setStrokeStyle()setLineWidth()```等设置,以最后一次设置为准。

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // begin path
  3. ctx.rect(10, 10, 100, 30)
  4. ctx.setFillStyle('yellow')
  5. ctx.fill()
  6. // begin another path
  7. ctx.beginPath()
  8. ctx.rect(10, 40, 100, 30)
  9. // only fill this rect, not in current path
  10. ctx.setFillStyle('blue')
  11. ctx.fillRect(10, 70, 100, 30)
  12. ctx.rect(10, 100, 100, 30)
  13. // it will fill current path
  14. ctx.setFillStyle('red')
  15. ctx.fill()
  16. ctx.draw()

uniapp

CanvasContext.bezierCurveTo

创建三次方贝塞尔曲线路径。

Tip: 曲线的起始点为路径中前一个点。

参数

参数类型说明
cp1xNumber第一个贝塞尔控制点的 x 坐标
cp1yNumber第一个贝塞尔控制点的 y 坐标
cp2xNumber第二个贝塞尔控制点的 x 坐标
cp2yNumber第二个贝塞尔控制点的 y 坐标
xNumber结束点的 x 坐标
yNumber结束点的 y 坐标

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // Draw points
  3. ctx.beginPath()
  4. ctx.arc(20, 20, 2, 0, 2 * Math.PI)
  5. ctx.setFillStyle('red')
  6. ctx.fill()
  7. ctx.beginPath()
  8. ctx.arc(200, 20, 2, 0, 2 * Math.PI)
  9. ctx.setFillStyle('lightgreen')
  10. ctx.fill()
  11. ctx.beginPath()
  12. ctx.arc(20, 100, 2, 0, 2 * Math.PI)
  13. ctx.arc(200, 100, 2, 0, 2 * Math.PI)
  14. ctx.setFillStyle('blue')
  15. ctx.fill()
  16. ctx.setFillStyle('black')
  17. ctx.setFontSize(12)
  18. // Draw guides
  19. ctx.beginPath()
  20. ctx.moveTo(20, 20)
  21. ctx.lineTo(20, 100)
  22. ctx.lineTo(150, 75)
  23. ctx.moveTo(200, 20)
  24. ctx.lineTo(200, 100)
  25. ctx.lineTo(70, 75)
  26. ctx.setStrokeStyle('#AAAAAA')
  27. ctx.stroke()
  28. // Draw quadratic curve
  29. ctx.beginPath()
  30. ctx.moveTo(20, 20)
  31. ctx.bezierCurveTo(20, 100, 200, 100, 200, 20)
  32. ctx.setStrokeStyle('black')
  33. ctx.stroke()
  34. ctx.draw()

针对 moveTo(20, 20)``bezierCurveTo(20, 100, 200, 100, 200, 20)``` 的三个关键坐标如下:

  • 红色:起始点(20, 20)
  • 蓝色:两个控制点(20, 100) (200, 100)
  • 绿色:终止点(200, 20)

清除画布上在该矩形区域内的内容。

参数

参数类型说明
xNumber矩形区域左上角的x坐标
yNumber矩形区域左上角的y坐标
widthNumber矩形区域的宽度
heightNumber矩形区域的高度

示例代码

clearRect 并非画一个白色的矩形在地址区域,而是清空,为了有直观感受,对 canvas 加了一层背景色。

  1. <canvas canvas-id="myCanvas" style="border: 1px solid; background: #123456;"/>
  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(0, 0, 150, 200)
  4. ctx.setFillStyle('blue')
  5. ctx.fillRect(150, 0, 150, 200)
  6. ctx.clearRect(10, 10, 150, 75)
  7. ctx.draw()

uniapp

CanvasContext.clip

从原始画布中剪切任意形状和尺寸。一旦剪切了某个区域,则所有之后的绘图都会被限制在被剪切的区域内(不能访问画布上的其他区域)。可以在使用 clip() 方法前通过使用 save() 方法对当前画布区域进行保存,并在以后的任意时间对其进行恢复(通过 restore() 方法)。

Tip: 用 setFillStroke() 设置矩形线条的颜色,如果没设置默认是黑色。

示例代码

  1. const context = uni.createCanvasContext('myCanvas')
  2. uni.downloadFile({
  3. url: 'https://img-cdn-qiniu.dcloud.net.cn/uniapp/images/uni@2x.png',
  4. success: function (res) {
  5. context.save()
  6. context.beginPath()
  7. context.arc(96, 96, 48, 0, 2 * Math.PI)
  8. context.clip()
  9. context.drawImage(res.tempFilePath, 48, 48)
  10. context.restore()
  11. context.draw()
  12. }
  13. })

CanvasContext.closePath

关闭一个路径。

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

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.moveTo(10, 10)
  3. ctx.lineTo(100, 10)
  4. ctx.lineTo(100, 100)
  5. ctx.closePath()
  6. ctx.stroke()
  7. ctx.draw()

uniapp

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.rect(10, 10, 100, 30)
  3. ctx.closePath()
  4. // begin another path
  5. ctx.beginPath()
  6. ctx.rect(10, 40, 100, 30)
  7. // only fill this rect, not in current path
  8. ctx.setFillStyle('blue')
  9. ctx.fillRect(10, 70, 100, 30)
  10. ctx.rect(10, 100, 100, 30)
  11. // it will fill current path
  12. ctx.setFillStyle('red')
  13. ctx.fill()
  14. ctx.draw()

CanvasContext.createCircularGradient

创建一个从圆心开始的渐变。返回的 对象,需要使用 CanvasGradient.addColorStop() 来指定渐变点,至少要两个。

参数

参数类型定义
xNumber圆心的x坐标
yNumber圆心的y坐标
rNumber圆的半径

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // Create circular gradient
  3. const grd = ctx.createCircularGradient(75, 50, 50)
  4. grd.addColorStop(0, 'red')
  5. grd.addColorStop(1, 'white')
  6. // Fill with gradient
  7. ctx.setFillStyle(grd)
  8. ctx.fillRect(10, 10, 150, 80)
  9. ctx.draw()

uniapp

CanvasContext.createLinearGradient

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

参数

参数类型定义
x0Number起点的x坐标
y0Number起点的y坐标
x1Number终点的x坐标
y1Number终点的y坐标

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // Create linear gradient
  3. const grd = ctx.createLinearGradient(0, 0, 200, 0)
  4. grd.addColorStop(0, 'red')
  5. grd.addColorStop(1, 'white')
  6. // Fill with gradient
  7. ctx.setFillStyle(grd)
  8. ctx.fillRect(10, 10, 150, 80)
  9. ctx.draw()

CanvasContext.createPattern

对指定的图像创建模式的方法,可在指定的方向上重复元图像

参数

参数类型说明
imageString重复的图像源,仅支持包内路径和临时路径
repetitionString指定如何重复图像,有效值有: repeat, repeat-x, repeat-y, no-repeat

示例代码

  1. const pattern = ctx.createPattern('/path/to/image', 'repeat-x')
  2. ctx.fillStyle = pattern
  3. ctx.fillRect(0, 0, 300, 150)
  4. ctx.draw()

CanvasContext.draw

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

参数

参数类型说明最低版本
reserveBoolean非必填。本次绘制是否接着上一次绘制,即reserve参数为false,则在本次调用drawCanvas绘制之前native层应先清空画布再继续绘制;若reserver参数为true,则保留当前画布上的内容,本次调用drawCanvas绘制的内容覆盖在上面,默认 false
callbackFunction绘制完成后回调1.7.0

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(10, 10, 150, 100)
  4. ctx.draw()
  5. ctx.fillRect(50, 50, 150, 100)
  6. ctx.draw()
  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(10, 10, 150, 100)
  4. ctx.draw()
  5. ctx.fillRect(50, 50, 150, 100)
  6. ctx.draw(true)

uniapp

CanvasContext.drawImage

绘制图像到画布。

参数

参数类型说明
imageResourceString所要绘制的图片资源
dxNumber图像的左上角在目标canvas上 X 轴的位置
dyNumber图像的左上角在目标canvas上 Y 轴的位置
dWidthNumber在目标画布上绘制图像的宽度,允许对绘制的图像进行缩放
dHeightNumber在目标画布上绘制图像的高度,允许对绘制的图像进行缩放
sxNumber源图像的矩形选择框的左上角 X 坐标
syNumber源图像的矩形选择框的左上角 Y 坐标
sWidthNumber源图像的矩形选择框的高度
sHeightNumber源图像的矩形选择框的高度

有三个版本的写法:

  • drawImage(dx, dy)
  • drawImage(dx, dy, dWidth, dHeight)
  • drawImage(sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)示例代码
  1. const ctx = uni.createCanvasContext('myCanvas')
  2. uni.chooseImage({
  3. success: function(res){
  4. ctx.drawImage(res.tempFilePaths[0], 0, 0, 150, 100)
  5. ctx.draw()
  6. }
  7. })

CanvasContext.fill

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

Tip: 如果当前路径没有闭合,fill() 方法会将起点和终点进行连接,然后填充,详情见例一。

Tip: fill() 填充的的路径是从 beginPath() 开始计算,但是不会将 fillRect() 包含进去,详情见例二。

示例代码

uniapp

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // begin path
  3. ctx.rect(10, 10, 100, 30)
  4. ctx.setFillStyle('yellow')
  5. ctx.fill()
  6. // begin another path
  7. ctx.beginPath()
  8. ctx.rect(10, 40, 100, 30)
  9. // only fill this rect, not in current path
  10. ctx.setFillStyle('blue')
  11. ctx.fillRect(10, 70, 100, 30)
  12. ctx.rect(10, 100, 100, 30)
  13. // it will fill current path
  14. ctx.setFillStyle('red')
  15. ctx.fill()
  16. ctx.draw()

CanvasContext.fillRect

填充一个矩形。

Tip:setFillStyle() 设置矩形的填充色,如果没设置默认是黑色。

参数

参数类型定义
xNumber矩形路径左上角的x坐标
yNumber矩形路径左上角的y坐标
widthNumber矩形路径的宽度
heightNumber矩形路径的高度

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(10, 10, 150, 75)
  4. ctx.draw()

uniapp

CanvasContext.fillText

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

参数

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFontSize(20)
  3. ctx.fillText('Hello', 20, 20)
  4. ctx.fillText('MINA', 100, 100)
  5. ctx.draw()

CanvasContext.lineTo

增加一个新点,然后创建一条从上次指定点到目标点的线。

Tip:stroke() 方法来画线条

参数

参数类型说明
xNumber目标位置的x坐标
yNumber目标位置的y坐标

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.moveTo(10, 10)
  3. ctx.rect(10, 10, 100, 50)
  4. ctx.lineTo(110, 60)
  5. ctx.stroke()
  6. ctx.draw()

CanvasContext.measureText

测量文本尺寸信息,目前仅返回文本宽度。同步接口。(App端自定义组件编译模式暂时不可用)

参数

参数类型说明
textString要测量的文本

返回

返回 TextMetrics 对象,结构如下:

参数类型说明
widthNumber文本的宽度

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.font = 'italic bold 20px cursive'
  3. const metrics = ctx.measureText('Hello World')
  4. console.log(metrics.width)

CanvasContext.moveTo

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

参数

参数类型说明
xNumber目标位置的x坐标
yNumber目标位置的y坐标

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.moveTo(10, 10)
  3. ctx.lineTo(100, 10)
  4. ctx.moveTo(10, 50)
  5. ctx.lineTo(100, 50)
  6. ctx.stroke()
  7. ctx.draw()

uniapp

CanvasContext.quadraticCurveTo

创建二次贝塞尔曲线路径。曲线的起始点为路径中前一个点。

参数

参数类型说明
cpxNumber贝塞尔控制点的x坐标
cpyNumber贝塞尔控制点的y坐标
xNumber结束点的x坐标
yNumber结束点的y坐标

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // Draw points
  3. ctx.beginPath()
  4. ctx.arc(20, 20, 2, 0, 2 * Math.PI)
  5. ctx.setFillStyle('red')
  6. ctx.fill()
  7. ctx.beginPath()
  8. ctx.arc(200, 20, 2, 0, 2 * Math.PI)
  9. ctx.setFillStyle('lightgreen')
  10. ctx.fill()
  11. ctx.beginPath()
  12. ctx.arc(20, 100, 2, 0, 2 * Math.PI)
  13. ctx.setFillStyle('blue')
  14. ctx.fill()
  15. ctx.setFillStyle('black')
  16. ctx.setFontSize(12)
  17. // Draw guides
  18. ctx.beginPath()
  19. ctx.moveTo(20, 20)
  20. ctx.lineTo(20, 100)
  21. ctx.lineTo(200, 20)
  22. ctx.setStrokeStyle('#AAAAAA')
  23. ctx.stroke()
  24. // Draw quadratic curve
  25. ctx.beginPath()
  26. ctx.moveTo(20, 20)
  27. ctx.quadraticCurveTo(20, 100, 200, 20)
  28. ctx.setStrokeStyle('black')
  29. ctx.stroke()
  30. ctx.draw()

针对 moveTo(20, 20)``quadraticCurveTo(20, 100, 200, 20)``` 的三个关键坐标如下:

  • 红色:起始点(20, 20)
  • 蓝色:控制点(20, 100)

CanvasContext.rect

创建一个矩形。

Tip: 用 fill() 或者 stroke() 方法将矩形真正的画到 canvas 中。

参数

参数类型说明
xNumber矩形路径左上角的x坐标
yNumber矩形路径左上角的y坐标
widthNumber矩形路径的宽度
heightNumber矩形路径的高度

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.rect(10, 10, 150, 75)
  3. ctx.setFillStyle('red')
  4. ctx.fill()
  5. ctx.draw()

uniapp

CanvasContext.restore

恢复之前保存的绘图上下文。

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. // save the default fill style
  3. ctx.save()
  4. ctx.setFillStyle('red')
  5. ctx.fillRect(10, 10, 150, 100)
  6. // restore to the previous saved state
  7. ctx.restore()
  8. ctx.fillRect(50, 50, 150, 100)
  9. ctx.draw()

CanvasContext.rotate

以原点为中心,原点可以用 translate方法修改。顺时针旋转当前坐标轴。多次调用rotate,旋转的角度会叠加。

参数

参数类型说明
rotateNumber旋转角度,以弧度计(degrees * Math.PI/180;degrees范围为0~360)

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.strokeRect(100, 10, 150, 100)
  3. ctx.rotate(20 * Math.PI / 180)
  4. ctx.strokeRect(100, 10, 150, 100)
  5. ctx.rotate(20 * Math.PI / 180)
  6. ctx.strokeRect(100, 10, 150, 100)

uniapp

保存当前的绘图上下文。

示例代码

  1. const ctx = wx.createCanvasContext('myCanvas')
  2. // save the default fill style
  3. ctx.save()
  4. ctx.setFillStyle('red')
  5. ctx.fillRect(10, 10, 150, 100)
  6. // restore to the previous saved state
  7. ctx.restore()
  8. ctx.fillRect(50, 50, 150, 100)
  9. ctx.draw()

CanvasContext.scale

在调用scale方法后,之后创建的路径其横纵坐标会被缩放。多次调用scale,倍数会相乘。

参数

参数类型说明
scaleWidthNumber横坐标缩放的倍数 (1 = 100%,0.5 = 50%,2 = 200%)
scaleHeightNumber纵坐标轴缩放的倍数 (1 = 100%,0.5 = 50%,2 = 200%)

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.strokeRect(10, 10, 25, 15)
  3. ctx.scale(2, 2)
  4. ctx.strokeRect(10, 10, 25, 15)
  5. ctx.scale(2, 2)
  6. ctx.strokeRect(10, 10, 25, 15)
  7. ctx.draw()

CanvasContext.setFillStyle

设置填充色,如果没有设置 fillStyle,默认颜色为 black。

语法

  1. canvasContext.setFillStyle(color)
  2. canvasContext.fillStyle = color

参数

参数类型定义说明
colorColorGradient Object填充色

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(10, 10, 150, 75)
  4. ctx.draw()

uniapp

CanvasContext.setFontSize

设置字体的字号。

参数类型说明
fontSizeNumber字体的字号

CanvasContext.setGlobalAlpha

设置全局画笔透明度。

参数

参数类型范围说明
alphaNumber0~1透明度,0 表示完全透明,1 表示完全不透明

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setFillStyle('red')
  3. ctx.fillRect(10, 10, 150, 100)
  4. ctx.setGlobalAlpha(0.2)
  5. ctx.setFillStyle('blue')
  6. ctx.fillRect(50, 50, 150, 100)
  7. ctx.setFillStyle('yellow')
  8. ctx.fillRect(100, 100, 150, 100)
  9. ctx.draw()

uniapp

CanvasContext.setLineCap

设置线条的端点样式。

参数

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.beginPath()
  3. ctx.moveTo(10, 10)
  4. ctx.lineTo(150, 10)
  5. ctx.stroke()
  6. ctx.beginPath()
  7. ctx.setLineCap('butt')
  8. ctx.setLineWidth(10)
  9. ctx.moveTo(10, 30)
  10. ctx.lineTo(150, 30)
  11. ctx.stroke()
  12. ctx.beginPath()
  13. ctx.setLineCap('round')
  14. ctx.setLineWidth(10)
  15. ctx.moveTo(10, 50)
  16. ctx.lineTo(150, 50)
  17. ctx.stroke()
  18. ctx.beginPath()
  19. ctx.setLineCap('square')
  20. ctx.setLineWidth(10)
  21. ctx.moveTo(10, 70)
  22. ctx.lineTo(150, 70)
  23. ctx.stroke()
  24. ctx.draw()

CanvasContext.setLineDash

设置线条宽度。

参数

参数类型定义
patternArray一组描述交替绘制线段和间距(坐标空间单位)长度的数字
offsetNumber虚线偏移量

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.setLineDash([10, 20], 5);
  3. ctx.beginPath();
  4. ctx.moveTo(0,100);
  5. ctx.lineTo(400, 100);
  6. ctx.stroke();
  7. ctx.draw()

uniapp

CanvasContext.setLineJoin

设置线条的交点样式。

参数

参数类型范围说明
lineJoinString'bevel'、'round'、'miter'线条的结束交点样式

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.beginPath()
  3. ctx.moveTo(10, 10)
  4. ctx.lineTo(100, 50)
  5. ctx.lineTo(10, 90)
  6. ctx.stroke()
  7. ctx.beginPath()
  8. ctx.setLineJoin('bevel')
  9. ctx.setLineWidth(10)
  10. ctx.moveTo(50, 10)
  11. ctx.lineTo(140, 50)
  12. ctx.lineTo(50, 90)
  13. ctx.stroke()
  14. ctx.beginPath()
  15. ctx.setLineJoin('round')
  16. ctx.setLineWidth(10)
  17. ctx.moveTo(90, 10)
  18. ctx.lineTo(180, 50)
  19. ctx.lineTo(90, 90)
  20. ctx.stroke()
  21. ctx.beginPath()
  22. ctx.setLineJoin('miter')
  23. ctx.setLineWidth(10)
  24. ctx.moveTo(130, 10)
  25. ctx.lineTo(220, 50)
  26. ctx.lineTo(130, 90)
  27. ctx.stroke()
  28. ctx.draw()

CanvasContext.setLineWidth

设置线条的宽度。

参数

参数类型说明
lineWidthNumber线条的宽度(单位是px)

示例代码

  1. const ctx = uni.createCanvasContext('myCanvas')
  2. ctx.beginPath()
  3. ctx.moveTo(10, 10)
  4. ctx.lineTo(150, 10)
  5. ctx.stroke()
  6. ctx.beginPath()
  7. ctx.setLineWidth(5)
  8. ctx.moveTo(10, 30)
  9. ctx.lineTo(150, 30)
  10. ctx.stroke()
  11. ctx.beginPath()
  12. ctx.setLineWidth(10)
  13. ctx.moveTo(10, 50)
  14. ctx.lineTo(150, 50)
  15. ctx.stroke()
  16. ctx.beginPath()
  17. ctx.setLineWidth(15)
  18. ctx.moveTo(10, 70)
  19. ctx.lineTo(150, 70)
  20. ctx.stroke()
  21. ctx.draw()

uniapp

CanvasContext.setMiterLimit

设置最大斜接长度,斜接长度指的是在两条线交汇处内角和外角之间的距离。 当 setLineJoin() 为 miter 时才有效。超过最大倾斜长度的,连接处将以 lineJoin 为 bevel 来显示。

参数

参数类型说明
miterLimitNumber最大斜接长度

示例代码

const ctx = uni.createCanvasContext('myCanvas')
ctx.beginPath()
ctx.setLineWidth(10)
ctx.setLineJoin('miter')
ctx.setMiterLimit(1)
ctx.moveTo(10, 10)
ctx.lineTo(100, 50)
ctx.lineTo(10, 90)
ctx.stroke()

ctx.beginPath()
ctx.setLineWidth(10)
ctx.setLineJoin('miter')
ctx.setMiterLimit(2)
ctx.moveTo(50, 10)
ctx.lineTo(140, 50)
ctx.lineTo(50, 90)
ctx.stroke()

ctx.beginPath()
ctx.setLineWidth(10)
ctx.setLineJoin('miter')
ctx.setMiterLimit(3)
ctx.moveTo(90, 10)
ctx.lineTo(180, 50)
ctx.lineTo(90, 90)
ctx.stroke()

ctx.beginPath()
ctx.setLineWidth(10)
ctx.setLineJoin('miter')
ctx.setMiterLimit(4)
ctx.moveTo(130, 10)
ctx.lineTo(220, 50)
ctx.lineTo(130, 90)
ctx.stroke()

ctx.draw()

CanvasContext.setShadow

设置阴影样式。如果没有设置,offsetX 默认值为0, offsetY 默认值为0, blur 默认值为0,color 默认值为 black。

参数

参数类型定义说明
offsetXNumber阴影相对于形状在水平方向的偏移
offsetYNumber阴影相对于形状在竖直方向的偏移
blurNumber0~100阴影的模糊级别,数值越大越模糊
colorColor阴影的颜色

示例代码

const ctx = uni.createCanvasContext('myCanvas')
ctx.setFillStyle('red')
ctx.setShadow(10, 50, 50, 'blue')
ctx.fillRect(10, 10, 150, 75)
ctx.draw()

uniapp

CanvasContext.setStrokeStyle

设置边框颜色。如果没有设置 fillStyle,默认颜色为 black。

参数

参数类型定义说明
colorColorGradient Object填充色

示例代码

const ctx = uni.createCanvasContext('myCanvas')
ctx.setStrokeStyle('red')
ctx.strokeRect(10, 10, 150, 75)
ctx.draw()

CanvasContext.setTextAlign

用于设置文字的对齐

参数类型定义
alignString可选值 'left'、'center'、'right'

示例代码

const ctx = uni.createCanvasContext('myCanvas')

ctx.setStrokeStyle('red')
ctx.moveTo(150, 20)
ctx.lineTo(150, 170)
ctx.stroke()

ctx.setFontSize(15)
ctx.setTextAlign('left')
ctx.fillText('textAlign=left', 150, 60)

ctx.setTextAlign('center')
ctx.fillText('textAlign=center', 150, 80)

ctx.setTextAlign('right')
ctx.fillText('textAlign=right', 150, 100)

ctx.draw()

uniapp

CanvasContext.setTextBaseline

用于设置文字的水平对齐

参数

参数类型说明
textBaselineString可选值 'top'、'bottom'、'middle'、'normal'

示例代码

const ctx = uni.createCanvasContext('myCanvas')

ctx.setStrokeStyle('red')
ctx.moveTo(5, 75)
ctx.lineTo(295, 75)
ctx.stroke()

ctx.setFontSize(20)

ctx.setTextBaseline('top')
ctx.fillText('top', 5, 75)

ctx.setTextBaseline('middle')
ctx.fillText('middle', 50, 75)

ctx.setTextBaseline('bottom')
ctx.fillText('bottom', 120, 75)

ctx.setTextBaseline('normal')
ctx.fillText('normal', 200, 75)

ctx.draw()

CanvasContext.setTransform

使用矩阵重新设置(覆盖)当前变换的方法

语法

canvasContext.setTransform(scaleX, skewX, skewY, scaleY, translateX, translateY)

参数

参数类型说明
scaleXNumber水平缩放
skewXNumber水平倾斜
skewYNumber垂直倾斜
scaleYNumber垂直缩放
translateXNumber水平移动
translateYNumber垂直移动

CanvasContext.stroke

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

Tip: stroke() 描绘的的路径是从 beginPath() 开始计算,但是不会将 strokeRect() 包含进去,详情见例二。

示例代码

const ctx = uni.createCanvasContext('myCanvas')
ctx.moveTo(10, 10)
ctx.lineTo(100, 10)
ctx.lineTo(100, 100)
ctx.stroke()
ctx.draw()

uniapp

const ctx = uni.createCanvasContext('myCanvas')
// begin path
ctx.rect(10, 10, 100, 30)
ctx.setStrokeStyle('yellow')
ctx.stroke()

// begin another path
ctx.beginPath()
ctx.rect(10, 40, 100, 30)

// only stoke this rect, not in current path
ctx.setStrokeStyle('blue')
ctx.strokeRect(10, 70, 100, 30)

ctx.rect(10, 100, 100, 30)

// it will stroke current path
ctx.setStrokeStyle('red')
ctx.stroke()
ctx.draw()

CanvasContext.strokeRect

画一个矩形(非填充)。用 setFillStroke() 设置边框颜色,如果没设置默认是黑色。

参数

参数类型范围说明
xNumber矩形路径左上角的x坐标
yNumber矩形路径左上角的y坐标
widthNumber矩形路径的宽度
heightNumber矩形路径的高度

示例代码

const ctx = uni.createCanvasContext('myCanvas')
ctx.setStrokeStyle('red')
ctx.strokeRect(10, 10, 150, 75)
ctx.draw()

uniapp

CanvasContext.strokeText

给定的 (x, y) 位置绘制文本描边的方法

语法

参数

参数类型说明
textString要绘制的文本
xNumber文本起始点的 x 轴坐标
yNumber文本起始点的 y 轴坐标
maxWidthNumber需要绘制的最大宽度,可选

使用矩阵多次叠加当前变换的方法。

参数

CanvasContext.translate

对当前坐标系的原点(0, 0)进行变换,默认的坐标系原点为页面左上角。

参数

参数类型说明
xNumber水平坐标平移量
yNumber竖直坐标平移量

示例代码




发现错误?想参与编辑?