调用函数setLineDashvoid ctx.setLineDash(segments);
segments一个Array数组。一组描述交替绘制线段和间距(坐标空间单位)长度的数字。 如果数组元素的数量是奇数, 数组的元素会被复制并重复。例如, [5, 15, 25] 会变成 [5, 15, 25, 5, 15, 25]。
function drawDashedLine(pattern) {
ctx.beginPath();
ctx.setLineDash(pattern);
ctx.moveTo(0, y);
ctx.lineTo(300, y);
ctx.stroke();
y += 20;}
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');let y = 15;
drawDashedLine([]);
drawDashedLine([1, 1]);
drawDashedLine([10, 10]);
drawDashedLine([20, 5]);
drawDashedLine([15, 3, 3, 3]);
drawDashedLine([20, 3, 3, 3, 3, 3, 3, 3]);
drawDashedLine([12, 3, 3]); // Equals [12, 3, 3, 12, 3, 3]
总结一下:
1 比如在第三条虚线中,pattern是[10,10]表示的是红色框A内的实线长度为10,黄色框B内的空白部分长度为10,
2 解释下如果数组元素的数量是奇数, 数组的元素会被复制并重复,例如, [5, 15, 25] 会变成 [5, 15, 25, 5, 15, 25]。因为虚线是周期性的,一般是实线和空白重复间隔出现,如果数量为奇数就会出现实线-空白-实线(第一次循环结束)-实线(第二次循环开始),这样就不合理,所以后面会被复制一份,变成实线-空白-实线-空白-实线-空白对应 [5, 15, 25, 5, 15, 25],这样就合理了
转载于:https://blog.csdn.net/hotboyboy/article/details/88580039