The CanvasRenderingContext2D.arc() method of the Canvas 2D API adds a circular arc to the current sub-path.
Note: Want to draw a circle? The arc() method is the best way. Simply specify a start angle of 0 radians (0°) and an end angle of 2π radians (360°).
void ctx.arc(x, y, radius, startAngle, endAngle [, anticlockwise]);
The arc() method creates a circular arc centered at (x, y) with a radius ofradius. The path starts at startAngle and ends at endAngle, and travels in the direction given by anticlockwise (defaulting to clockwise).
xyradiusstartAngleendAngleanticlockwise Optional
Boolean which, if true, causes the arc to be drawn counter-clockwise between the start and end angles. The default value is false (clockwise).This example draws a complete circle using the arc() method.
<canvas id="canvas"></canvas>
The arc is given an x coordinate of 100, a y coordinate of 75, and a radius of 50. To make a full circle, the arc begins at an angle of 0 radians (0°), and ends at an angle of 2π radians (360°).
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.arc(100, 75, 50, 0, 2 * Math.PI);
ctx.stroke();
This example draws various shapes to show what is possible when using arc().
const canvas = document.getElementById('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 anticlockwise = i % 2 == 1; // Draw anticlockwise
ctx.arc(x, y, radius, startAngle, endAngle, anticlockwise);
if (i > 1) {
ctx.fill();
} else {
ctx.stroke();
}
}
} | Screenshot | Live sample |
|---|---|
| Specification | Status | Comment |
|---|---|---|
| HTML Living Standard The definition of 'CanvasRenderingContext2D.arc' in that specification. | Living Standard |
| Desktop | ||||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
| Basic support | Yes | 12 | Yes | Yes | Yes | Yes |
| Mobile | |||||||
|---|---|---|---|---|---|---|---|
| Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
| Basic support | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
Starting with Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1):
anticlockwise parameter is optional.radius now throws an IndexSizeError error ("Index or size is negative or greater than the allowed amount").CanvasRenderingContext2D
CanvasRenderingContext2D.ellipse() to draw an elliptical arc
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/arc