canvas arc()方法詳解
推薦參閱canvas arc()一文替代本篇文章。
此方法可以繪製圓弧,下面詳細介紹一下它的用法。
語法結構:
[JavaScript] 純文字檢視 複製程式碼context.arc(x,y,r,sAngle,eAngle,counterclockwise)
引數解析:
(1).x:必需,圓心的x軸座標。
(2).y:必需,圓心的y軸座標。
(3).r:必須,圓的半徑尺寸。
(4).sAngle:必需,圓弧繪製起始角度(弧度)。
(5).eAngle:必需,圓弧繪製的終止角度(弧度)。
(6).counterclockwise:可選,規定圓弧順時針繪製還是逆時針繪製,false順時針(預設),true逆時針。
先補充一點初中數學知識,以便於圓角繪製:
一個圓周的弧度是2π,一個圓周是360度,那麼一度角對應2π/360弧度。
於是得出,任意度數角α對應的弧度是α*π/180。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); ctx.arc(100, 100, 80, 0, 2 * Math.PI); ctx.stroke(); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
上面的程式碼繪製了一個完整的圓弧,從0弧度開始繪製,2π弧度結束。
0弧度的開始位置預設座標是(180,100)。
再來看一個程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var rad = Math.PI / 180; ctx.arc(100, 100, 80, 30 * rad, 120 * rad); ctx.stroke(); ctx.fill(); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
上面的程式碼繪製了從30度到120度的圓弧;大家也可以注意到canvas的圓角計算模型和數學中的有所區別,數學中的逆時針是正,但是canvas中順時針為正。再來看一度程式碼例項:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ var canvas = document.getElementById("canvas"); var ctx = canvas.getContext("2d"); var rad = Math.PI / 180; ctx.arc(100, 100, 80, 30 * rad, 120 * rad,true); ctx.stroke(); ctx.fill(); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
上面的程式碼我們將繪製設定為逆時針。
特別注意:雖然繪製方向變了,但是canvas的圓角計算模型沒變,依然是順時針為正。
相關文章
- canvas closePath()方法詳解Canvas
- canvas arc()Canvas
- Canvas API 詳解CanvasAPI
- canvas 繪製文字詳解Canvas
- HTML5 Canvas 詳解HTMLCanvas
- canvas路徑與子路徑詳解Canvas
- 題解:AT_arc174_a [ARC174A] A Multiply
- AT_arc174_a [ARC174A] A Multiply 題解
- 題解:AT_arc182_a [ARC182A] Chmax Rush!
- AT_arc175_a [ARC175A] Spoon Taking Problem 題解
- canvas setTransform()方法CanvasORM
- canvas isPointInPath()方法Canvas
- 題解:AT_arc175_b [ARC175B] Parenthesis Arrangemen
- AT_arc174_b [ARC174B] Bought Review 題解View
- java方法詳解Java
- super()方法詳解
- toJSON()方法詳解JSON
- ARC165F題解
- ARC152C 題解
- [題解]ARC176 A~B
- ARC175 A~C 題解
- 題解:AT_arc181_b [ARC181B] Annoying String Problem
- 題解:AT_arc116_b [ARC116B] Products of Min-Max
- ARC173 解題報告
- ARC173A Neq Number 題解
- 高效能渲染——詳解Html Canvas的優勢與效能HTMLCanvas
- Blob實現與File DataURL canvas相互轉換示例詳解Canvas
- js陣列方法詳解JS陣列
- 05.Java 方法詳解Java
- Pandas中resample方法詳解
- ARC131F ARC Stamp
- [ARC186E] Missing Subsequence 題解
- [ARC112F] Die Siedler 題解
- ARC180 部分簡要題解
- 24.Qt Quick QML-Canvas和Context2D詳解QTUICanvasContext
- Java中的方法引用詳解Java
- list中add、set方法詳解
- 詳解模板方法設計模式設計模式