绘制虚线(蚂蚁线)
1. 前言
canvas 绘制路径时默认使用的是实线(solid),本小节我们学习在 canvas 中如何绘制虚线。canvas 中提供了一个设置虚线样式的方法 setLineDash()
。
2. 什么是虚线?
首先大家要理解的是,虚线的最小组成单元是一段空白加上一段实线,整条虚线就是由这样的最小单元重复组成的。
我们先绘制一条实线,它是这样的,整条线段的方格都是填满的。
如果是虚线条,就把线段的一部分擦除掉,当然,在 canvas 中这个擦除不是毫无规律的,而是要遵守下面的规则。
在 canvas 中,想要上面的效果,我们只需要给 setLineDash()
方法赋值一个 [1,1] 这样的参数就可以了。
3. setLineDash() 方法
语法:
void ctx.setLineDash(segments);
参数 |
说明 |
segments |
一个数组,一组描述交替绘制线段和间距(坐标空间单位)长度的数字。 |
segments 是一个数组,而且必须是一个偶数长度的数组,canvas 在执行 setLineDash
时,会判断当前数组长度是否为偶数,如果不是,则会自动复制一份当前数组中的数据,然后追加到数组中。
例如:[1, 2, 3] 会变成 [1, 2, 3, 1, 2, 3]。
上面这个例子就是我们设定了参数 segments
数组为 [1,1] 后绘制的效果。
如果我们设置参数 segments
数组为 [1,2] 的话,就会变成这样:
如果我们设置参数 segments
数组为奇数个数,比如 [1,2,3] ,canvas 会发现是一个奇数长度的数组,于是它就会把数组复制一遍变成 [1,2,3,1,2,3],于是就会绘制成下面这样:
3.1 整体案例
我们上面讲到的内容为了方便理解,我们用了1,2,3这样的长度来表示,我们现在来看参数是 [10,20,30] 的完整的案例。
4. 方法整理
本小节中我们使用到一个新的方法 setLineDash()
。
4.1 setLineDash()方法
变量名 |
类型 |
是否必须 |
说明 |
segments |
Array |
是 |
一个数组,一组描述交替绘制线段和间距(坐标空间单位)长度的数字。 |
5. 总结
本小节我们主要学习了利用 setLineDash
方法设定虚线的样式,本小节主要是理解它的参数的规律,以及参数对线条样式的影响。这里需要说明传入的数组的长度是没有限制的,数组偶数下标代表实线长度,奇数下标代表空白长度。