search
开发文档
开发文档/小游戏开发/API/渲染/画布
画布更新时间:2025-12-24 18:13:02

基础信息说明

功能概述:创建画布、进行2D/WebGL绘图、并将绘制结果导出为图片数据或临时文件。

项目说明
版本要求
前提条件
使用限制
相关教程

方法说明

方法名签名同步/异步说明
document.getElementById('canvas')document.getElementById('canvas'): Canvas同步创建主屏 Canvas(单例)
document.createElement('canvas')document.createElement('canvas'): Canvas同步创建离屏 Canvas(默认 2D)
Canvas.getContextCanvas.getContext(string contextType, Object contextAttrs?): RenderingContext同步获取画布对象的绘图上下文(2D/WebGL)
Canvas.toTempFilePathCanvas.toTempFilePath(Object option): void同步发起,回调异步将当前 Canvas 保存为一个临时文件
Canvas.toDataURLCanvas.toDataURL(String type?, Number encoderOptions?): String同步把画布上的绘制内容以一个 data URI 的格式返回

参数说明

document.getElementById('canvas')

返回主屏 Canvas,内部保证单例,多次调用返回同一实例

document.createElement('canvas')

返回新的离屏 Canvas(默认 2D 使用),每次调用都会创建独立实例
离屏 Canvas 支持设置宽高;主屏 Canvas 设置宽高通常不生效

Canvas.width / Canvas.height

属性名类型必填说明
widthNumber画布宽度,单位 px;离屏可设置
heightNumber画布高度,单位 px;离屏可设置

Canvas.getContext(string contextType, Object contextAttrs = {})

属性名类型必填说明
contextTypeString支持 '2d'(离屏默认使用)与 'webgl'/'experimental-webgl'(主屏默认使用);
兼容 'webgl2'、'experimental-webgl2'
contextAttrsObject透传给底层的上下文参数;
当 contextType='webgl' 且未显示设置 antialias 时,默认 false

Canvas.toTempFilePath(Object option = {})

内部会将截图转为 Base64 后写入临时文件,并回调返回 tempFilePath

属性名类型必填说明
xNumber默认 0,截取区域左上角 x 坐标
yNumber默认 0,截取区域左上角 y 坐标
widthNumber默认 canvas.width,截取区域宽度
heightNumber默认 canvas.height,截取区域高度
destWidthNumber默认 canvas.width,导出文件宽度(会按比例缩放截取内容)
destHeightNumber默认 canvas.height,导出文件高度(会按比例缩放截取内容)
fileTypeString默认 'png',导出文件类型
qualityNumber默认 1,导出质量(仅对jpg/webp格式图片生效)
successFunction成功回调,入参 { tempFilePath }
failFunction失败回调,入参 { errMsg, errCode }
completeFunction结束回调,入参同 success/fail

Canvas.toDataURL(String type = 'image/png', Number encoderOptions)

属性名类型必填说明
typeMIME如 image/png、image/jpeg
qualityNumber图片质量 0~1(仅对jpg、webp格式图片生效)

返回值说明

接口返回值类型说明
document.getElementById('canvas')Canvas返回主屏 Canvas 实例(单例)
document.createElement('canvas')Canvas返回新的离屏 Canvas 实例
Canvas.width / Canvas.heightNumber画布宽高数值;离屏可设置
Canvas.getContextCanvasRenderingContext2D|WebGLRenderingContext2D 或 WebGL 1.0 渲染上下文实例。
Canvas.toTempFilePathvoid无直接返回值,通过回调获取 tempFilePath
Canvas.toDataURLStringDataURL 字符串(data:image/...;base64,...)

回调结果说明

Canvas.toTempFilePath

回调触发时机回调参数说明
success写入临时文件成功{ tempFilePath }tempFilePath 已做路径映射
fail写入临时文件失败{ errMsg, errCode }errCode 由底层返回
complete成功或失败后都会触发同 success / fail-

示例代码

<canvas id="canvas" width="300" height="200" />

// 获取主屏 canvas 并绘制
const canvas = document.getElementById('canvas')
const ctx = canvas.getContext('2d')
ctx.fillStyle = '#ff6600'
ctx.fillRect(0, 0, 100, 100)

// 导出为临时文件
canvas.toTempFilePath({
fileType: 'png',
quality: 0.9,
success({ tempFilePath }) {
console.log('saved to', tempFilePath)
},
fail(err) {
console.error('save failed', err)
}
})

// 创建离屏 canvas 并导出 DataURL
const offscreen = document.createElement('canvas')
offscreen.width = 200
offscreen.height = 200
const offCtx = offscreen.getContext('2d')
offCtx.fillStyle = '#3366ff'
offCtx.fillRect(50, 50, 100, 100)
const dataUrl = offscreen.toDataURL('image/png')
console.log('data url length', dataUrl.length)
上一篇:图片
下一篇:帧率
文档内容是否有帮助?
有帮助
无帮助