国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > HTML > 正文

html5 Canvas畫圖教程(5)—canvas里畫曲線之arc方法

2020-03-24 17:04:54
字體:
來源:轉載
供稿:網友
在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();

和lineTo一樣,arc也是畫的路徑,所以我們要在他后面調用填充或描邊的方法才能顯出圖形(圖中采用了紅色的strokeStyle與半透明紅色的fillStyle)。

現在我們來畫一個1/4圓,角度嘛,就是90度。前面說了,360度角即2PI弧度,那么一度角就是2PI/360=PI/180弧度,那么90度就是2PI/360*90=PI/2弧度(其他的角度請自行計算)。

復制代碼代碼如下:
ctx.arc(400,400,20,0,Math.PI*2/4);



由圖我們可以確定arc的0度就是數學上常用的0度,但是角度默認是順時針張開的,與數學模型相反(跟坐標有關,因為canvas坐標也與數學坐標相反)。
不過前面不是有個參數是確定是否逆時針嗎?我們把他設為true如何?

復制代碼代碼如下:
ctx.arc(400,400,20,0,Math.PI*2/4,true);



你會看到,角度變成了逆時針展開,導致弧線變成了360-90=270度。
但是!大家要注意一點,就是起點與終點的計算方式,始終是以0度為起點,并順時針延伸的,不存在順反的說法。順反時針只是弧線的繪制方向。
這樣不僅僅可以防止順來逆去的容易混淆,而且更方便計算。
不過,靈活的使用逆時針,有時候很有用。
上面的例子,我們的起點角度都是0,現在我們試試其他的起點角度吧,比如90度。

復制代碼代碼如下:
ctx.arc(400,400,20,Math.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形了。html教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 庄浪县| 怀安县| 白朗县| 焦作市| 神农架林区| 页游| 天柱县| 固阳县| 岑溪市| 宝坻区| 怀远县| 鄂州市| 册亨县| 丹凤县| 山丹县| 伊宁县| 岳普湖县| 云龙县| 中阳县| 深圳市| 商城县| 庆元县| 酒泉市| 浙江省| 拉萨市| 阜城县| 栾城县| 高雄县| 东至县| 寿宁县| 巴中市| 苍梧县| 通江县| 桐庐县| 西乌珠穆沁旗| 化德县| 长泰县| 谷城县| 云安县| 平乡县| 大同县|