小程序画布创建离屏 canvas 实例wx.createOffscreenCanvas

OffscreenCanvas wx.createOffscreenCanvas(object object, number width, number height, Object this)

创建离屏 canvas 实例

基础库 2.16.1 开始支持,低版本需做兼容处理。
小程序插件:支持,需要小程序基础库版本不低于 2.16.1
微信 Windows 版:支持
微信 Mac 版:支持

参数

object object

属性 类型 默认值 必填 说明
type string webgl 创建的离屏 canvas 类型
合法值 说明
webgl webgl类型上下文
2d 2d类型上下文
width number 画布宽度
height number 画布高度
compInst Component 在自定义组件下,当前组件实例的 this

返回值

OffscreenCanvas

示例代码

  // 创建离屏 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)

离屏 Canvas 类型不可混用

由于 webgl canvas 和 2d canvas 的底层实现方式不同,因此必须要在调用 wx.createOffscreenCanvas 时提前指定类型。

指定类型后,离屏 canvas getContext(type) 调用不允许混用,如不能对 webgl canvas 调用 <code>getContext('2d')。

同样的,不同类型 canvas 调用 createImage 创建的图片对象也不支持混用,使用时请注意尽量使用 canvas 自身的 <code>createImage 创建图片对象。

与 MediaRecorder 结合

离屏 webgl canvas 支持作为参数传递给 wx.createMediaRecorder, 离屏 2d canvas 暂不支持。

旧版 createOffscreenCanvas

旧版函数签名为 wx.createOffscreenCanvas(width: number, height: number, this: object): OffscreenCanvas,从基础库 2.7.0 开始支持

从基础库 2.16.1 开始改为 wx.createOffscreenCanvas(options: object): OffscreenCanvas,向下兼容旧版入参。 但需注意旧版入参只能创建 webgl 类型,如需创建 2d 类型则必须使用新版。

分类小程序画布功能相关推荐:

小程序画布创建离屏 canvas 实例wx.createOffscreenCanvas 小程序创建 canvas 的绘图上下文 CanvasContext 对象wx.createCanvasContext 小程序画布生成图片wx.canvasToTempFilePath 小程序将像素数据绘制到画布wx.canvasPutImageData 小程序获取 canvas 区域隐含的像素数据wx.canvasGetImageData 小程序Canvas的使用方法 小程序画布返回 Canvas 的绘图上下文Canvas.getContext 小程序画布创建一个图片对象Canvas.createImage 小程序画布重绘Canvas.requestAnimationFrame 小程序取消由 requestAnimationFrame 添加到计划中的动画帧请求Canvas.cancelAnimationFrame 小程序画布创建一个 ImageData 对象Canvas.createImageData 小程序画布创建 Path2D 对象Canvas.createPath2D 小程序画布犯创建图片展示的 data URI Canvas.toDataURL 小程序canvas 组件的绘图上下文CanvasContext 小程序画布draw用法CanvasContext.draw 小程序画布创建一个线性的渐变颜色CanvasContext.createLinearGradient 小程序创建一个圆形的渐变颜色CanvasContext.createCircularGradient 小程序画布对指定的图像创建模式的方法CanvasContext.createPattern 小程序画布测量文本尺寸信息CanvasContext.measureText 小程序画布保存绘图上下文CanvasContext.save 小程序画布恢复之前保存的绘图上下文 小程序画布开始创建一个路径CanvasContext.beginPath 小程序把路径移动到画布中的指定点CanvasContext.moveTo 小程序画布增加一个新点CanvasContext.lineTo 小程序画布创建二次贝塞尔曲线路径CanvasContext.quadraticCurveTo 小程序创建三次方贝塞尔曲线路径CanvasContext.bezierCurveTo 小程序画布创建一条弧线CanvasContext.arc 小程序创建一个矩形路径CanvasContext.rect 小程序画布根据控制点和半径绘制圆弧路径CanvasContext.arcTo 小程序画布裁剪任意形状和尺寸CanvasContext.clip 小程序画布填充一个矩形CanvasContext.fillRect 小程序画布画一个非填充矩形CanvasContext.strokeRect 小程序画布清除画布上矩形区域内的内容CanvasContext.clearRect 小程序画布对路径中的内容进行填充CanvasContext.fill 小程序画布画出当前路径的边框CanvasContext.stroke 小程序画布关闭一个路径CanvasContext.closePath 小程序画布路径缩放CanvasContext.scale 小程序画布旋转 小程序画布变化画布圆点位置 小程序画布绘制图像到画布CanvasContext.drawImage 小程序画布绘制文本描边 小程序使用矩阵多次叠加当前变换的方法CanvasContext.transform 小程序使用矩阵设置当前变换的方法CanvasContext.setTransform 小程序画布设置填充色CanvasContext.setFillStyle 小程序画布设置描边颜色CanvasContext.setStrokeStyle 小程序画布设定阴影样式CanvasContext.setShadow 小程序画布设置全局画笔透明度CanvasContext.setGlobalAlpha 小程序画笔设置线条的宽度CanvasContext.setLineWidth 小程序画布设置线条的交点样式CanvasContext.setLineJoin 小程序画布设置线条的端点样式CanvasContext.setLineCap 小程序画笔设置虚线样式CanvasContext.setLineDash 小程序画布设置最大斜接长度CanvasContext.setMiterLimit 小程序画布在画布上绘制文本CanvasContext.fillText 小程序画布设置字体大小 小程序画布设置文字的对齐方式CanvasContext.setTextAlign 小程序画布设置文字的竖直对齐 小程序画布渐变对象CanvasGradient 小程序画布添加颜色的渐变点CanvasGradient.addColorStop 小程序画布颜色Color 小程序画布图片对象Image 小程序画布ImageData 对象 小程序画布离屏 canvas 实例OffscreenCanvas 小程序画布创建一个图片对象OffscreenCanvas.createImage 小程序画布获取OffscreenCanvas 的绘图上下文OffscreenCanvas.getContext 小程序画布Path2D 小程序画布Canvas 绘图上下文RenderingContext