CanvasRenderingContext2D: arc() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

CanvasRenderingContext2D.arc() 方法是 Canvas 2D API 的一部分,用于向当前子路径添加一个圆形弧线。

语法

js
arc(x, y, radius, startAngle, endAngle)
arc(x, y, radius, startAngle, endAngle, counterclockwise)

arc() 方法会创建一个以 (x, y) 为中心,半径为 radius 的圆形弧线。路径从 startAngle 开始,到 endAngle 结束,并根据 counterclockwise 参数(默认为顺时针)的方向绘制。

参数

x

弧线中心的水平坐标。

y

弧线中心的垂直坐标。

半径

弧线的半径。必须是正数。

startAngle

弧线开始的角度(以弧度为单位),从正 x 轴开始测量。

endAngle

弧线结束的角度(以弧度为单位),从正 x 轴开始测量。

counterclockwise 可选

一个可选的布尔值。如果为 true,则在起始角度和结束角度之间逆时针绘制弧线。默认值为 false(顺时针)。

返回值

无(undefined)。

示例

绘制一个完整的圆

此示例使用 arc() 方法绘制了一个完整的圆。

HTML

html
<canvas></canvas>

JavaScript

该弧线的 x 坐标为 100,y 坐标为 75,半径为 50。要绘制一个完整的圆,弧线从 0 弧度(0°)开始,到 2π 弧度(360°)结束。

js
const canvas = document.querySelector("canvas");
const ctx = canvas.getContext("2d");

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

结果

演示不同的形状

此示例绘制了各种形状,以展示 arc() 的功能。

js
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

浏览器兼容性

另见