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控制虚线的起始偏移量,可用于创建动画效果。
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。