虚线绘制

Canvas虚线绘制详解,掌握setLineDash、lineDashOffset创建各种虚线样式和动画效果。Canvas通过setLineDash方法创建虚线效果,支持自定义虚线图案和动画。

基本语法

ctx.setLineDash([segment1, segment2, ...])
ctx.lineDashOffset = value

虚线数组规则

数组元素交替表示实线和空白长度:

ctx.setLineDash([10, 5])      // 10像素实线,5像素空白
ctx.setLineDash([10, 5, 2, 5]) // 10实线,5空白,2实线,5空白
ctx.setLineDash([])           // 实线(无虚线)

基本虚线样式

不同虚线图案

lineDashOffset偏移

lineDashOffset控制虚线的起始偏移量,可用于创建动画效果。

ctx.setLineDash([10, 5])
ctx.lineDashOffset = 0   // 默认起始位置
ctx.lineDashOffset = 5   // 偏移5像素
ctx.lineDashOffset = 15  // 偏移15像素(循环)

虚线动画

蚂蚁线动画效果

虚线矩形选择框

选择框效果(拖拽绘制)

虚线圆形进度

虚线圆形进度条

获取虚线设置

const dashArray = ctx.getLineDash()  // 返回当前虚线数组

注意事项

数组长度

奇数长度数组会被复制一份变成偶数,如[5]变成[5, 5]。

重置虚线

ctx.setLineDash([])  // 恢复实线

路径类型

虚线效果适用于所有描边操作,包括strokeRect和strokeText。