CanvasRenderingContext2D.arc()

CanvasRenderingContext2D.arc() метод Canvas 2D API добавляет дугу к пути с центром (x, y) и с радиусом r с началом в startAngle и с концом endAngle и с направлением против часовой стрелки (по умолчанию по часовой стрелке).

Синтаксис

void ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);

Параметры

x

X координата центра дуги.

y

Y координата центра дуги.

radius

Радиус.

startAngle

Угол начала дуги. Измеряется по часовой стрелке от положительной оси Х, выражается в радианах.

endAngle

Угол завершения дуги. Измеряется по часовой стрелке от положительной оси Х, выражается в радианах.

anticlockwise Необязательный

Необязательный Boolean. Задаёт направление рисования дуги. Если true - против часовой, false - по часовой.

Примеры

Использование метода arc

Ниже приведён пример простого кода который рисует круг.

HTML

<canvas id="canvas"></canvas>

JavaScript

var canvas = document.getElementById("canvas");
var ctx = canvas.getContext("2d");

ctx.beginPath();
ctx.arc(75, 75, 50, 0, 2 * Math.PI);
ctx.stroke();

Вы можете редактировать код, представленный ниже, и сделанные вами изменения отобразятся на холсте в режиме реального времени (убедитесь, что вы используете браузер, поддерживающий данное свойство - смотрите таблицу совместимости):

Демонстрация разных форм дуг

В этом примере нарисованные разные формы чтобы показать возможности метода arc().

var canvas = document.getElementById('canvas');
var ctx = canvas.getContext('2d');

// Draw shapes
for (i=0;i<4;i++){
  for(j=0;j<3;j++){
    ctx.beginPath();
    var x              = 25+j*50;               // x coordinate
    var y              = 25+i*50;               // y coordinate
    var radius         = 20;                    // Arc radius
    var startAngle     = 0;                     // Starting point on circle
    var endAngle       = Math.PI+(Math.PI*j)/2; // End point on circle
    var anticlockwise  = i%2==1;                // Draw anticlockwise

    ctx.arc(x,y,radius,startAngle,endAngle, anticlockwise);

    if (i>1){
      ctx.fill();
    } else {
      ctx.stroke();
    }
  }
}
ScreenshotLive sample

Спецификации

Specification
HTML Standard
# dom-context-2d-arc-dev

Поддержка браузерами

BCD tables only load in the browser

Примечания относительно Gecko

Начиная с Gecko 2.0:

  • Параметр anticlockwise опциональный,
  • Указывание отрицательного радиуса теперь приводит к ошибке IndexSizeError (en-US) error ("Index or size is negative or greater than the allowed amount").

Смотрите также