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:指定绘制线条的样式,可取值:colorgradientpattern
  • 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 许可发布