--- title: CanvasRenderingContext2D.setLineDash() slug: Web/API/CanvasRenderingContext2D/setLineDash tags: - API - Canvas - CanvasRenderingContext2D - Dashes - LInes - Method - setLineDash translation_of: Web/API/CanvasRenderingContext2D/setLineDash ---
Canvas 2D API的{{domxref("CanvasRenderingContext2D")}}接口的setLineDash()
方法在填充线时使用虚线模式。 它使用一组值来指定描述模式的线和间隙的交替长度。
提示:如果要切换回至实线模式,将 dash list 设置为一个空数组即可。
void ctx.setLineDash(segments);
segments
[5, 15, 25]
会变成 [5, 15, 25, 5, 15, 25]。
这是一段简单的代码片段,使用 setLineDash
方法绘制一条线段。
<canvas id="canvas"></canvas>
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();
{{ EmbedLiveSample('基本示例', 700, 360) }}
此示例说明了各种常见的线划线模式。
<canvas id="canvas"></canvas>
下面创建的drawDashedLine()
函数使得多个虚线的绘制变得简单。它接收模式数组作为其唯一参数。
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]
{{ EmbedLiveSample('一些常见的模式', 700, 180) }}
Specification | Status | Comment |
---|---|---|
{{SpecName('HTML WHATWG', "scripting.html#dom-context-2d-setlinedash", "CanvasRenderingContext2D.setLineDash")}} | {{Spec2('HTML WHATWG')}} |
此页面上的兼容性表是根据结构化数据生成的。 如果您想提供数据,请查看https://github.com/mdn/browser-compat-data并向我们发送请求请求。
{{Compat("api.CanvasRenderingContext2D.setLineDash")}}