Skip to content

Canvas ​

Canvas 基础 ​

canvas 是 inline 盒。

html
<canvas id="canvas"></canvas>

canvas 所有核心接口都在 canvas 的绘制上下文中。

js
/**
 * @type {HTMLCanvasElement}
 */
const canvas = document.getElementById('canvasId')
canvas.width = 300 // canvas 宽度,以 CSS 像素(px)表示,默认 300
canvas.height = 300 // canvas 宽度,以 CSS 像素(px)表示,默认 150
const ctx = canvas.getContext('2d') // 2d 绘图

直线 ​

  • beginPath():beginPath 会清空子路径列表开始一个新路径。
  • moveTo(x, y):将一个新的子路径的起始点移动到 (x,y) 坐标。
  • lineTo(x, y):使用直线连接子路径的终点到 (x, y) 坐标。
  • closePath():笔点返回到当前子路径起始点的方法。

绘制矩形的简易 API ​

实际上,掌握了直线的绘制即掌握了矩形的绘制,但是为了更方便,官方也提供了绘制矩形的简易 API。

曲线 ​

动作 ​

绘制动作 ​

stroke 样式 ​

  • strokeStyle:指定绘制线条的样式,可取值:color、gradient、pattern。
  • lineWidth:指定线宽。
  • lineCap:指定绘制线条两头的形状,可取值:butt(默认值)、round、square。
  • lineJoin:指定绘制线条之间的交叉形状,可取值:miter(默认值)、bevel、round。
  • miterLimit:需配合 lineJoin = miter 来使用。
    lineJoin

fill 样式 ​

状态保存 ​

图形变换 ​

阴影 ​

透明度 ​

遮挡效果 ​

剪切 ​

清空区域 ​

文字 ​

图片 ​

drawImage()

  • drawImage(image, dx, dy)
  • drawImage(image, dx, dy, dWidth, dHeight)
  • drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight)
js
const image = new Image()
image.src = 'https://picsum.photos/200/300'
image.onload = function () {
  // ctx.drawImage(...)
}

绘制虚线 ​

setLineDash

检测是否在路径内 ​

isPointInPath(x, y)

参阅 ​

基于 MIT 许可发布