Spec-Zone.ru › Web APIs

CanvasRenderingContext2D: свойство lineJoin

Базовая линия Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство CanvasRenderingContext2D.lineJoin API Canvas 2D определяет форму, используемую для соединения двух отрезков линии в точке их пересечения.

Это свойство не имеет эффекта, когда два соединённых отрезка имеют одинаковое направление, поскольку в этом случае область соединения не добавляется. Вырожденные отрезки с длиной ноль (т.е. с всеми конечными точками и контрольными точками в одной и той же позиции) также игнорируются.

Примечание: Линии можно рисовать с помощью методов stroke(), strokeRect() и strokeText().

Значение

Для этого свойства доступно три возможных значения: "round", "bevel", и "miter". Значение по умолчанию "miter".

Three horizontal zigzag lines with round, bevel, and miter values, shown from top to bottom respectively.

"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.lineCap
  • CanvasRenderingContext2D.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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API