files/en-us/web/api/canvasrenderingcontext2d/ellipse/index.md
{{APIRef("Canvas API")}}
The
CanvasRenderingContext2D.ellipse()
method of the Canvas 2D API adds an elliptical arc to the current sub-path.
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle)
ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise)
The ellipse() method creates an elliptical arc centered at
(x, y) with the radii radiusX and radiusY. The
path starts at startAngle and ends at endAngle, and travels in
the direction given by counterclockwise (defaulting to clockwise).
x
y
radiusX
radiusY
rotation
startAngle
endAngle
counterclockwise {{optional_inline}}
true, draws the ellipse
counterclockwise (anticlockwise). The default value is false
(clockwise).None ({{jsxref("undefined")}}).
This example draws an ellipse at an angle of π/4 radians (45°). To make a full ellipse, the arc begins at an angle of 0 radians (0°), and ends at an angle of 2π radians (360°).
<canvas id="canvas" width="200" height="200"></canvas>
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
// Draw the ellipse
ctx.beginPath();
ctx.ellipse(100, 100, 50, 75, Math.PI / 4, 0, 2 * Math.PI);
ctx.stroke();
// Draw the ellipse's line of reflection
ctx.beginPath();
ctx.setLineDash([5, 5]);
ctx.moveTo(0, 200);
ctx.lineTo(200, 0);
ctx.stroke();
{{ EmbedLiveSample('Drawing_a_full_ellipse', 700, 250) }}
This example creates three elliptical paths with varying properties.
<canvas id="canvas"></canvas>
const canvas = document.getElementById("canvas");
const ctx = canvas.getContext("2d");
ctx.fillStyle = "red";
ctx.beginPath();
ctx.ellipse(60, 75, 50, 30, Math.PI * 0.25, 0, Math.PI * 1.5);
ctx.fill();
ctx.fillStyle = "blue";
ctx.beginPath();
ctx.ellipse(150, 75, 50, 30, Math.PI * 0.25, 0, Math.PI);
ctx.fill();
ctx.fillStyle = "green";
ctx.beginPath();
ctx.ellipse(240, 75, 50, 30, Math.PI * 0.25, 0, Math.PI, true);
ctx.fill();
{{ EmbedLiveSample('Various_elliptical_arcs', 700, 180) }}
{{Specifications}}
{{Compat}}