CanvasRenderingContext2D:setLineDash() 方法

基线 广泛可用

此功能已得到很好的建立,并且可以在许多设备和浏览器版本中使用。它自以下时间起在各浏览器中可用: 2015 年 7 月.

Canvas 2D API 的 CanvasRenderingContext2D 接口的 setLineDash() 方法设置在描边线条时使用的线段样式。它使用一个值数组来指定线条和间隙的交替长度,这些长度描述了样式。

注意:要恢复使用实线,请将线段列表设置为一个空数组。

语法

js
setLineDash(segments)

参数

segments

一个 Array,其中包含指定交替绘制线条和间隙的距离(以坐标空间单位为单位)的数字。如果数组中的元素个数为奇数,则数组的元素会被复制并连接起来。例如,[5, 15, 25] 将变为 [5, 15, 25, 5, 15, 25]。如果数组为空,则线段列表将被清除,线条描边将恢复为实线。

返回值

无 (undefined)。

示例

基本示例

此示例使用 setLineDash() 方法在实线上方绘制一条虚线。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

js
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");

// Dashed line
ctx.beginPath();
ctx.setLineDash([5, 15]);
ctx.moveTo(0, 50);
ctx.lineTo(300, 50);
ctx.stroke();

// Solid line
ctx.beginPath();
ctx.setLineDash([]);
ctx.moveTo(0, 100);
ctx.lineTo(300, 100);
ctx.stroke();

结果

一些常见样式

此示例说明了各种常见的线段样式。

HTML

html
<canvas id="canvas"></canvas>

JavaScript

下面创建的 drawDashedLine() 函数使绘制多条虚线变得简单。它仅接收一个样式数组作为参数。

js
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]

结果

规范

规范
HTML 标准
# dom-context-2d-setlinedash-dev

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅