基础库 2.11.0 开始支持,低版本需做兼容处理。
微信小程序插件:支持
相关文档: 画布指南、canvas 组件介绍
功能描述
创建 Path2D 对象
基础库 2.11.0 开始支持,低版本需做兼容处理。
微信小程序插件:支持
相关文档: 画布指南、canvas 组件介绍
创建 Path2D 对象
基础库 2.9.0 开始支持,低版本需做兼容处理。
微信小程序插件:支持
相关文档: 画布指南、canvas 组件介绍
创建一个 ImageData 对象。仅支持在 2D Canvas 中使用。
基础库 2.7.0 开始支持,低版本需做兼容处理。
微信小程序插件:支持
相关文档: 画布指南、canvas 组件介绍
创建一个图片对象。 支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
基础库 2.7.0 开始支持,低版本需做兼容处理。
微信小程序插件:支持
相关文档: 画布指南、canvas 组件介绍
取消由 requestAnimationFrame 添加到计划中的动画帧请求。支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
基础库 2.7.0 开始支持,低版本需做兼容处理。
相关文档: 画布指南、canvas 组件介绍
Canvas 实例,可通过 SelectorQuery 获取。
画布宽度
画布高度
该方法返回 Canvas 的绘图上下文
创建一个图片对象。 支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
创建一个 ImageData 对象。仅支持在 2D Canvas 中使用。
创建 Path2D 对象
在下次进行重绘时执行。 支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
取消由 requestAnimationFrame 添加到计划中的动画帧请求。支持在 2D Canvas 和 WebGL Canvas 下使用, 但不支持混用 2D 和 WebGL 的方法。
返回一个包含图片展示的 data URI 。可以使用 type 参数其类型,默认为 PNG 格式。
2D Canvas 示例 在开发者工具中预览效果
WebGL 示例 在开发者工具中预览效果
基础库 1.9.0 开始支持,低版本需做兼容处理。
以 Promise 风格 调用:支持
微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6
微信 鸿蒙 OS 版:支持
相关文档: 画布指南、canvas 组件介绍
获取 canvas 区域隐含的像素数据。
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| canvasId | string | 是 | 画布标识,传入 canvas 组件的 canvas-id 属性。 | |
| x | number | 是 | 将要被提取的图像数据矩形区域的左上角横坐标 | |
| y | number | 是 | 将要被提取的图像数据矩形区域的左上角纵坐标 | |
| width | number | 是 | 将要被提取的图像数据矩形区域的宽度 | |
| height | number | 是 | 将要被提取的图像数据矩形区域的高度 | |
| success | function | 否 | 接口调用成功的回调函数 | |
| fail | function | 否 | 接口调用失败的回调函数 | |
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
| 属性 | 类型 | 说明 |
|---|---|---|
| width | number | 图像数据矩形的宽度 |
| height | number | 图像数据矩形的高度 |
| data | Uint8ClampedArray | 图像像素点数据,一维数组,每四项表示一个像素点的 rgba |
在自定义组件下,当前组件实例的this,以操作组件内 canvas 组件
在开发者工具中预览效果
wx.canvasGetImageData({
canvasId: 'myCanvas',
x: 0,
y: 0,
width: 100,
height: 100,
success(res) {
console.log(res.width) // 100
console.log(res.height) // 100
console.log(res.data instanceof Uint8ClampedArray) // true
console.log(res.data.length) // 100 * 100 * 4
}
})
基础库 1.9.0 开始支持,低版本需做兼容处理。
以 Promise 风格 调用:支持
微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6
微信 鸿蒙 OS 版:支持
相关文档: 画布指南、canvas 组件介绍
将像素数据绘制到画布。在自定义组件下,第二个参数传入自定义组件实例 this,以操作组件内 <canvas> 组件
| 属性 | 类型 | 默认值 | 必填 | 说明 |
|---|---|---|---|---|
| canvasId | string | 是 | 画布标识,传入 canvas 组件的 canvas-id 属性。 | |
| data | Uint8ClampedArray | 是 | 图像像素点数据,一维数组,每四项表示一个像素点的 rgba | |
| x | number | 是 | 源图像数据在目标画布中的位置偏移量(x 轴方向的偏移量) | |
| y | number | 是 | 源图像数据在目标画布中的位置偏移量(y 轴方向的偏移量) | |
| width | number | 是 | 源图像数据矩形区域的宽度 | |
| height | number | 是 | 源图像数据矩形区域的高度 | |
| success | function | 否 | 接口调用成功的回调函数 | |
| fail | function | 否 | 接口调用失败的回调函数 | |
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
在自定义组件下,当前组件实例的this,以操作组件内 canvas 组件
const data = new Uint8ClampedArray([255, 0, 0, 1])
wx.canvasPutImageData({
canvasId: 'myCanvas',
x: 0,
y: 0,
width: 1,
height: 1,
data: data,
success (res) {}
})
以 Promise 风格 调用:支持
微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6
微信 Windows 版:支持
微信 Mac 版:支持
微信 鸿蒙 OS 版:支持
相关文档: 画布指南、canvas 组件介绍
把当前画布指定区域的内容导出生成指定大小的图片。在 draw() 回调里调用该方法才能保证图片导出成功。
| 属性 | 类型 | 默认值 | 必填 | 说明 | 最低版本 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| x | number | 0 | 否 | 指定的画布区域的左上角横坐标 | 1.2.0 | |||||||
| y | number | 0 | 否 | 指定的画布区域的左上角纵坐标 | 1.2.0 | |||||||
| width | number | canvas宽度-x | 否 | 指定的画布区域的宽度 | 1.2.0 | |||||||
| height | number | canvas高度-y | 否 | 指定的画布区域的高度 | 1.2.0 | |||||||
| destWidth | number | width*屏幕像素密度 | 否 | 输出的图片的宽度 | 1.2.0 | |||||||
| destHeight | number | height*屏幕像素密度 | 否 | 输出的图片的高度 | 1.2.0 | |||||||
| canvasId | string | 否 | 画布标识,传入 canvas 组件的 canvas-id | |||||||||
| canvas | Object | 否 | 画布标识,传入 canvas 组件实例 (canvas type=”2d” 时使用该属性)。 | |||||||||
| fileType | string | png | 否 | 目标文件的类型 | 1.7.0 | |||||||
| ||||||||||||
| quality | number | 否 | 图片的质量,目前仅对 jpg 有效。取值范围为 (0, 1],不在范围内时当作 1.0 处理。 | 1.7.0 | ||||||||
| success | function | 否 | 接口调用成功的回调函数 | |||||||||
| fail | function | 否 | 接口调用失败的回调函数 | |||||||||
| complete | function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) | |||||||||
| 属性 | 类型 | 说明 |
|---|---|---|
| tempFilePath | string | 生成文件的临时路径 (本地路径) |
在自定义组件下,当前组件实例的this,以操作组件内 canvas 组件
wx.canvasToTempFilePath({
x: 100,
y: 200,
width: 50,
height: 50,
destWidth: 100,
destHeight: 100,
canvasId: 'myCanvas',
success(res) {
console.log(res.tempFilePath)
}
})
从基础库 2.9.0 开始,本接口停止维护,请使用 Canvas 代替
微信小程序插件:支持,需要微信小程序基础库版本不低于 1.9.6
微信 Windows 版:支持
微信 Mac 版:支持
微信 鸿蒙 OS 版:支持
相关文档: 旧版画布迁移指南、canvas 组件介绍
创建 canvas 的绘图上下文 CanvasContext 对象
要获取上下文的 canvas 组件 canvas-id 属性
在自定义组件下,当前组件实例的this,表示在这个自定义组件下查找拥有 canvas-id 的 canvas ,如果省略则不在任何自定义组件内查找
基础库 2.16.1 开始支持,低版本需做兼容处理。
微信小程序插件:支持,需要微信小程序基础库版本不低于 2.16.1
微信 Windows 版:支持
微信 Mac 版:支持
微信 鸿蒙 OS 版:支持
相关文档: 画布指南、canvas 组件介绍
创建离屏 canvas 实例
| 属性 | 类型 | 默认值 | 必填 | 说明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| type | string | webgl | 否 | 创建的离屏 canvas 类型 | |||||||
| |||||||||||
| width | number | 否 | 画布宽度 | ||||||||
| height | number | 否 | 画布高度 | ||||||||
| compInst | Component | 否 | 在自定义组件下,当前组件实例的 this | ||||||||
画布宽度
画布高度
在自定义组件下,当前组件实例的 this
// 创建离屏 2D canvas 实例
const canvas = wx.createOffscreenCanvas({type: '2d', width: 300, height: 150})
// 获取 context。注意这里必须要与创建时的 type 一致
const context = canvas.getContext('2d')
// 创建一个图片
const image = canvas.createImage()
// 等待图片加载
await new Promise(resolve => {
image.onload = resolve
image.src = IMAGE_URL // 要加载的图片 url
})
// 把图片画到离屏 canvas 上
context.clearRect(0, 0, 300, 150)
context.drawImage(image, 0, 0, 300, 150)
// 获取画完后的数据
const imgData = context.getImageData(0, 0, 300, 150)
由于 webgl canvas 和 2d canvas 的底层实现方式不同,因此必须要在调用 wx.createOffscreenCanvas 时提前指定类型。
指定类型后,离屏 canvas getContext(type) 调用不允许混用,如不能对 webgl canvas 调用 getContext('2d')。
同样的,不同类型 canvas 调用 createImage 创建的图片对象也不支持混用,使用时请注意尽量使用 canvas 自身的 createImage 创建图片对象。
离屏 webgl canvas 支持作为参数传递给 wx.createMediaRecorder, 离屏 2d canvas 暂不支持。
旧版函数签名为 wx.createOffscreenCanvas(width: number, height: number, this: object): OffscreenCanvas,从基础库 2.7.0 开始支持
从基础库 2.16.1 开始改为 wx.createOffscreenCanvas(options: object): OffscreenCanvas,向下兼容旧版入参。
但需注意旧版入参只能创建 webgl 类型,如需创建 2d 类型则必须使用新版。