Canvas API
HTML 的 <canvas> 元素是 HTML 页面中的一个 位图 区域。
Canvas API 允许 JavaScript 在画布上 绘制图形。
Canvas API 可以绘制形状、线条、曲线、框、文本和图像,以及颜色、旋转、透明度和其他像素操作。
您可以使用 HTML DOM 方法 getElementById()
访问 <canvas>
元素。
要在画布上绘制,您需要创建一个 2D 上下文 对象
const myCanvas = document.getElementById("myCanvas");
const ctx = myCanvas.getContext("2d");
注意
HTML <canvas>
元素本身没有绘制功能。
您必须使用 JavaScript 绘制任何图形。
该 getContext()
方法返回一个包含绘制工具(方法)的对象。
路径
在画布上绘制的常用方法是
- 开始路径 - beginPath()
- 移动到一个点 - moveTo()
- 在路径中绘制 - lineTo()
- 绘制路径 - stroke()
示例
const canvas = document.getElementById("myCanvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(20, 100);
ctx.lineTo(70, 100);
ctx.stroke();
自己试试 »
完整 Canvas API 参考
本参考涵盖 getContext("2d") 对象的所有属性和方法,用于在画布上绘制文本、线条、框、圆形、图片等。
绘制方法
只有 3 种方法可以直接在画布上绘制
方法 | 描述 |
---|---|
fillRect() | 绘制一个“填充”矩形 |
strokeRect() | 绘制一个矩形(不填充) |
clearRect() | 清除矩形内指定的像素 |
路径方法
方法 | 描述 |
---|---|
beginPath() | 开始一条新路径或重置当前路径 |
closePath() | 从当前点到起点添加一条线到路径 |
isPointInPath() | 如果指定点在当前路径中,则返回 true |
moveTo() | 将路径移动到画布上的一个点(不绘制) |
lineTo() | 向路径添加一条线 |
fill() | 填充当前路径 |
rect() | 向路径添加一个矩形 |
stroke() | 绘制当前路径 |
圆形和曲线 | |
bezierCurveTo() | 向路径添加一个三次贝塞尔曲线 |
arc() | 向路径添加一个圆弧/曲线(圆形或圆形的一部分) |
arcTo() | 在两个切线之间向路径添加一个圆弧/曲线 |
quadraticCurveTo() | 向路径添加一个二次贝塞尔曲线 |
文本
方法/属性 | 描述 |
---|---|
direction | 设置或返回用于绘制文本的方向 |
fillText() | 在画布上绘制“填充”文本 |
font | 设置或返回文本内容的字体属性 |
measureText() | 返回一个包含指定文本宽度的对象 |
strokeText() | 在画布上绘制文本 |
textAlign | 设置或返回文本内容的对齐方式 |
textBaseline | 设置或返回绘制文本时使用的文本基线 |
颜色、样式和阴影
方法/属性 | 描述 |
---|---|
addColorStop() | 在渐变对象中指定颜色和停止位置 |
createLinearGradient() | 创建一个线性渐变(用于画布内容) |
createPattern() | 以指定方向重复指定元素 |
createRadialGradient() | 创建一个径向/圆形渐变(用于画布内容) |
fillStyle | 设置或返回用于填充图形的颜色、渐变或图案 |
lineCap | 设置或返回线的端帽样式 |
lineJoin | 设置或返回两条线相交时创建的拐角类型 |
lineWidth | 设置或返回当前线宽 |
miterLimit | 设置或返回最大斜接长度 |
shadowBlur | 设置或返回阴影的模糊级别 |
shadowColor | 设置或返回用于阴影的颜色 |
shadowOffsetX | 设置或返回阴影到形状的水平距离 |
shadowOffsetY | 设置或返回阴影到形状的垂直距离 |
strokeStyle | 设置或返回用于描边的颜色、渐变或图案 |
变换
方法 | 描述 |
---|---|
scale() | 将当前绘图放大或缩小 |
rotate() | 旋转当前绘图 |
translate() | 重新映射画布上的 (0,0) 位置 |
transform() | 替换当前绘图的变换矩阵 |
setTransform() | 将当前变换重置为单位矩阵。然后运行 transform() |
图像绘制
方法 | 描述 |
---|---|
drawImage() | 将图像、画布或视频绘制到画布上 |
ImageData 对象 / 像素操作
方法/属性 | 描述 |
---|---|
createImageData() | 创建一个新的空白 ImageData 对象 |
getImageData() | 返回一个 ImageData 对象,该对象复制了画布上指定矩形的像素数据 |
ImageData.data | 返回一个包含指定 ImageData 对象的图像数据的对象 |
ImageData.height | 返回 ImageData 对象的高度 |
ImageData.width | 返回 ImageData 对象的宽度 |
putImageData() | 将图像数据(来自指定的 ImageData 对象)放回画布上 |
合成
属性 | 描述 |
---|---|
globalAlpha | 设置或返回当前绘图的 alpha 或透明度值 |
globalCompositeOperation | 设置或返回新图像如何绘制到现有图像上 |
其他方法
方法 | 描述 |
---|---|
clip() | 从原始画布中剪切任何形状和大小的区域 |
save() | 保存当前绘图上下文及其所有属性的状态 |
restore() | 恢复先前保存的状态和属性 |
createEvent() | |
getContext() | |
toDataURL() |
标准属性和事件
相关页面
Canvas 教程:Canvas 教程
HTML 教程:HTML5 Canvas
HTML 参考:HTML <canvas> 标签
浏览器支持
The <canvas>
元素是 HTML5 标准 (2014)。
Canvas API
在所有现代浏览器中都受支持
Chrome | Edge | Firefox | Safari | Opera | IE |
是 | 是 | 是 | 是 | 是 | 9-11 |