CanvasRenderingContext2D: метод setLineDash()
Базовая Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод setLineDash() API холста 2D CanvasRenderingContext2D интерфейса устанавливает шаблон штриховки для линий. Он использует массив значений, которые определяют чередующиеся длины линий и пробелов, описывающих шаблон.
Примечание: Чтобы вернуться к сплошным линиям, установите список штриховки на пустой массив.
Синтаксис
setLineDash(segments)
Параметры
segments-
Массив
Arrayчисел, определяющих расстояния для чередующегося рисования линии и пробела (в единицах координатной системы). Если количество элементов в массиве нечетно, элементы массива копируются и конкатенируются. Например,[5, 15, 25]преобразуется в[5, 15, 25, 5, 15, 25]. Если массив пуст, список штриховки очищается, и линии снова рисуются сплошными.
Возвращаемое значение
None (undefined).
Примеры
Базовый пример
В этом примере используется метод setLineDash() для рисования пунктирной линии над сплошной.
HTML
<canvas id="canvas"></canvas>
JavaScript
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
<canvas id="canvas"></canvas>
JavaScript
Функция 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]
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-setlinedash-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
setLineDash |
23 | 12 | 27 | 15 | 7 | 25 | 27 | 14 | 7 | 1.5 | 4.4 |
См. также
- Интерфейс, определяющий этот метод:
CanvasRenderingContext2D CanvasRenderingContext2D.getLineDash()CanvasRenderingContext2D.lineDashOffset
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash