在canvas畫線條這篇文章中,我講了畫直線的方法,按理這篇畫曲線的文章早該發了,但由於canvas畫曲線比較特殊,我還沒摸透,所以要一步步嘗試。
canvas裡畫曲線的困難之一,就在於他連曲線的函數就有4個!分別是arc,arcTo,quadraticCurveTo,bezierCurveTo.我從最簡單的arc方法講起吧。
arc的作用是畫一個正規的圓弧,可以是一個完整的圓,也可以是一個圓的某一段弧線。
arc的語法如下:
複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製程式碼
複製碼🎜>
context.arc(x, y, radius, startAngle, endAngle, anticlockwise)
他的參數我解釋一下,即
arc(圓心x,圓心y,半徑,開始的角度,結束的角度,是否逆時針)
如果我們用arc畫一個完整的圓,該怎麼搞?大家注意到參數中有個開始角度與結束角度,如果我們開始角度是0,結束角度是360,不就是個正圓了?
正解!但要注意的是,這裡的角度是用「弧度」來表示的(Flash也是),一個完整的圓即360度,就是2PI弧度。
複製代碼
代碼如下:
ctx.arc(400,400,20,0,Math.PI*2);
ctx.fill();
ctx.stroke();
複製程式碼
程式碼如下:
ctx.arc(400,arc(4000, ,Math.PI*2/4);
複製程式碼
程式碼如下:
ctx.arc(400,arc(4000, ,Math.PI*2/4,true);
複製程式碼
程式碼如下: ctx.arc(400,arc(400,0,022 .PI*2/4,Math.PI*2 Math.PI); 如果我們起點是90度而終點也是90度,那結果就是什麼都不得畫,所以我把終點角度改成了180度,最後得到下圖的圖形。
問題:如果我們從非0度起點來畫一個完整的圓,行不行?當然也可以,只要你把弧線的終點設定為360度起點角度,如: 複製程式碼程式碼如下: ctx.arc(400,400,20,Math.PI*2/4,Math.PI*2 Math.PI*2/4); //起點90度,終點360 90度
不過這種做法純屬沒事找事,正常人是不會用的。
總結:Canvas的arc方法是畫正圓弧線的辦法,也只能畫正弧線,沒法畫其他奇怪的弧線,比如S形——雖然我最喜歡S形了。