CanvasRenderingContext2D: метод arc()
Базовая линия Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод CanvasRenderingContext2D.arc() API 2D-холста добавляет дугу окружности к текущей подтраектории.
Синтаксис
arc(x, y, radius, startAngle, endAngle) arc(x, y, radius, startAngle, endAngle, counterclockwise)
Метод arc() создаёт дугу окружности, центрированную в точке (x, y), с радиусом radius. Траектория начинается в точке startAngle, заканчивается в точке endAngle, и движется в направлении, заданном значением counterclockwise (по умолчанию — по часовой стрелке).
Параметры
x-
Горизонтальная координата центра дуги.
y-
Вертикальная координата центра дуги.
radius-
Радиус дуги. Должен быть положительным.
startAngle-
Угол начала дуги в радианах, измеряемый от положительной части оси x.
endAngle-
Угол окончания дуги в радианах, измеряемый от положительной части оси x.
counterclockwiseНеобязательно-
Необязательное булево значение. Если
true, дуга рисуется против часовой стрелки между углами начала и конца. По умолчаниюfalse(по часовой стрелке).
Возвращаемое значение
None (undefined).
Примеры
Рисование полной окружности
В этом примере используется метод arc() для рисования полной окружности.
HTML
<canvas></canvas>
JavaScript
Дуга имеет координаты x=100, y=75 и радиус 50. Для полной окружности дуга начинается с угла 0 радиан (0°), и заканчивается углом 2π радиан (360°).
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
ctx.beginPath();
ctx.arc(100, 75, 50, 0, 2 * Math.PI);
ctx.stroke();
Результат
Различные фигуры
В этом примере демонстрируются различные фигуры, показывающие возможности метода arc().
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");
// Draw shapes
for (let i = 0; i <= 3; i++) {
for (let j = 0; j <= 2; j++) {
ctx.beginPath();
let x = 25 + j * 50; // x coordinate
let y = 25 + i * 50; // y coordinate
let radius = 20; // Arc radius
let startAngle = 0; // Starting point on circle
let endAngle = Math.PI + (Math.PI * j) / 2; // End point on circle
let counterclockwise = i % 2 === 1; // Draw counterclockwise
ctx.arc(x, y, radius, startAngle, endAngle, counterclockwise);
if (i > 1) {
ctx.fill();
} else {
ctx.stroke();
}
}
}
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-context-2d-arc-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
arc |
1 | 12 | 1.5 | 11.6 | 3 | 18 | 4 | 12 | 1 | 1.0 | 4.4 |
См. также
- Интерфейс, определяющий этот метод:
CanvasRenderingContext2D - Используйте
CanvasRenderingContext2D.ellipse(), чтобы нарисовать эллиптическую дугу.
© 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/arc