CanvasRenderingContext2D: свойство lineJoin
Базовая линия Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Свойство CanvasRenderingContext2D.lineJoin API Canvas 2D определяет форму, используемую для соединения двух отрезков линии в точке их пересечения.
Это свойство не имеет эффекта, когда два соединённых отрезка имеют одинаковое направление, поскольку в этом случае область соединения не добавляется. Вырожденные отрезки с длиной ноль (т.е. с всеми конечными точками и контрольными точками в одной и той же позиции) также игнорируются.
Примечание: Линии можно рисовать с помощью методов stroke(), strokeRect() и strokeText().
Значение
Для этого свойства доступно три возможных значения: "round", "bevel", и "miter". Значение по умолчанию "miter".
"round"-
Округляет углы фигуры, заполняя дополнительный сектор круга, центрированный в общей конечной точке соединённых отрезков. Радиус этих скругленных углов равен ширине линии.
"bevel"-
Заполняет дополнительную треугольную область между общей конечной точкой соединённых отрезков и отдельными внешними прямоугольными углами каждого отрезка.
"miter"-
Соединённые отрезки соединяются путём продолжения их внешних граней для соединения в одной точке, заполняя дополнительную область в форме ромба. Этот параметр зависит от свойства
miterLimit. Значение по умолчанию.
Примеры
Изменение соединений в пути
В этом примере применяются скругленные соединения линии к пути.
HTML
<canvas id="canvas"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.lineWidth = 20;
ctx.lineJoin = "round";
ctx.beginPath();
ctx.moveTo(20, 20);
ctx.lineTo(190, 100);
ctx.lineTo(280, 20);
ctx.lineTo(280, 150);
ctx.stroke();
Результат
Сравнение соединений линий
В примере ниже рисуются три разных пути, демонстрирующие каждый из трёх lineJoin вариантов.
const ctx = document.getElementById("canvas").getContext("2d");
ctx.lineWidth = 10;
["round", "bevel", "miter"].forEach((join, i) => {
ctx.lineJoin = join;
ctx.beginPath();
ctx.moveTo(-5, 5 + i * 40);
ctx.lineTo(35, 45 + i * 40);
ctx.lineTo(75, 5 + i * 40);
ctx.lineTo(115, 45 + i * 40);
ctx.lineTo(155, 5 + i * 40);
ctx.stroke();
});
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-linejoin-dev |
Совместимость с браузерами
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
lineJoin |
1 | 12 | 1.5 | ≤12.1 | 2 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
Примечания для WebKit/Blink
- В браузерах на основе WebKit и Blink, помимо этого свойства, реализован нестандартный и устаревший метод
ctx.setLineJoin().
См. также
- Интерфейс, определяющий это свойство:
CanvasRenderingContext2D CanvasRenderingContext2D.lineCapCanvasRenderingContext2D.lineWidth- Применение стилей и цветов
© 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/lineJoin