本文翻譯自Steve Fulton & Jeff Fulton HTML5 Canvas, Chapter 2, “Advanced Path Methods, Arcs”
在Canvas繪圖中,“圓弧”既可以是一個整圓,也可以是圓周的一部分。
context.arc()
context.arc(x, y, radius, startAngle, endAngle, anticlockwise)
在上述方法描述中,x和y定義圓心,radius定義圓周的半徑。startAngle和endAngle以極坐標值表示。anticlockwise(布爾值)定義圓弧的方向。
比如,如果我們想描畫一個以點(100, 100)為圓心,半徑為20的圓周,我們可以使用以下代碼:
context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*360, false);
執(zhí)行效果為:
![](/d/20211016/c7ba632bebee2580868fff99c59f3542.gif)
值得注意的是,在上述代碼中,我們需要將起始角度(0)和結(jié)束角度(360)通過乘以(Math.PI/180)來轉(zhuǎn)換成極坐標弧度。當起始角度為0而結(jié)束角度為360時,得到的是一個整圓。
除了整圓,我們也可以描畫圓弧片段。下述代碼描畫了四分之一個圓周:
context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*90, false);
![](/d/20211016/39f5a66077520b0a07ad04a6faf59ea5.gif)
如果我們想描畫除上述圓弧之外的另外四分之三個圓周,我們可以將anticlockwise設(shè)置為true:
context.arc(100, 100, 20, (Math.PI/180)*0, (Math.PI/180)*90, true);
![](/d/20211016/7c2ca66d12f9dcb8ee7ff4a09ad39c5c.gif)
譯注1:在Canvas的坐標系中,Y軸的方向是向下的。
譯注2:使用context.arcTo()方法也可以描畫圓弧。Steve Fulton & Jeff Fulton 的 HTML5 Canvas 原著中對該方法的描述是完全錯誤的。正確的arcTo()總結(jié)詳見:曲線之a(chǎn)rcTo。