CanvasRenderingContext2D: setLineDash() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨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
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
let y = 15;

function drawDashedLine(pattern) {
  ctx.beginPath();
  ctx.setLineDash(pattern);
  ctx.moveTo(0, y);
  ctx.lineTo(300, y);
  ctx.stroke();
  y += 20;
}

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

浏览器兼容性

另见