CanvasRenderingContext2D: метод stroke()
Базовая реализация Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Метод CanvasRenderingContext2D.stroke() API Canvas 2D выполняет обводку (контур) текущей или заданной траектории текущим стилем обводки.
Обводка выравнивается по центру траектории; другими словами, половина обводки рисуется по внутренней стороне, а половина — по внешней.
Обводка рисуется с использованием правила о нечётном числе пересечений, что означает, что точки пересечения траектории всё ещё будут заполнены.
Синтаксис
stroke() stroke(path)
Параметры
Возвращаемое значение
None (undefined).
Примеры
Простой прямоугольник с обводкой
В этом примере используется метод rect() для создания прямоугольника, а затем он рисуется на холсте с помощью stroke().
HTML
<canvas id="canvas"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.rect(10, 10, 150, 100);
ctx.stroke();
Результат
Повторная обводка траекторий
Обычно вы хотите вызвать beginPath() для каждой новой обводимой фигуры. Если этого не сделать, предыдущие подтраектории останутся частью текущей траектории и будут обводиться каждый раз при вызове метода stroke(). Однако в некоторых случаях такой эффект может быть желаемым.
HTML
<canvas id="canvas"></canvas>
JavaScript
Этот код обводит первую траекторию три раза, вторую — два раза, а третью — только один раз.
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// First sub-path
ctx.lineWidth = 26;
ctx.strokeStyle = "orange";
ctx.moveTo(20, 20);
ctx.lineTo(160, 20);
ctx.stroke();
// Second sub-path
ctx.lineWidth = 14;
ctx.strokeStyle = "green";
ctx.moveTo(20, 80);
ctx.lineTo(220, 80);
ctx.stroke();
// Third sub-path
ctx.lineWidth = 4;
ctx.strokeStyle = "pink";
ctx.moveTo(20, 140);
ctx.lineTo(280, 140);
ctx.stroke();
Результат
Обводка и заполнение
Если вы хотите выполнить как обводку, так и заполнение траектории, порядок выполнения этих действий определит результат. В этом примере квадрат слева нарисован с обводкой поверх заливки. Квадрат справа нарисован с заливкой поверх обводки.
HTML
<canvas id="canvas"></canvas>
JavaScript
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.lineWidth = 16;
ctx.strokeStyle = "red";
// Stroke on top of fill
ctx.beginPath();
ctx.rect(25, 25, 100, 100);
ctx.fill();
ctx.stroke();
// Fill on top of stroke
ctx.beginPath();
ctx.rect(175, 25, 100, 100);
ctx.stroke();
ctx.fill();
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-stroke-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
stroke |
1 | 12 | 1.5 | ≤12.1 | 2 | 18 | 4 | ≤12.1 | 1 | 1.0 | 4.4 |
path_parameter |
36 | 14 | 31 | 23 | 7 | 36 | 31 | 24 | 7 | 3.0 | 37 |
См. также
- Интерфейс, определяющий этот метод:
CanvasRenderingContext2D
© 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/stroke