canvas 繪製圓角矩形
繪製矩形非常簡單,具體參閱canvas 繪製矩形一章節。
canvas並沒有提供可以直接繪製圓角矩形的方法。
不過可以利用一些屬性來巧妙實現,或者自定義繪製圓角矩形的方法。
一.lineJoin實現圓角:
利用此屬性可以實現視覺上的圓角效果。
關於此屬性的具體用法可以參閱canvas lineJoin 屬性一章節。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload=function(){ let canvas = document.getElementById("canvas"); let ctx = canvas.getContext("2d"); ctx.lineWidth=10; ctx.lineJoin="round"; ctx.strokeRect(10,10,100,100); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
程式碼執行效果截圖如下:
lineJoin屬性完全是無心插柳柳成蔭,原本功能並不是為了實現圓角矩形。
但是它的功能特點恰恰滿足了繪製圓角矩形的功能。
缺點也非常明顯,沒法很自由舒暢的對矩形圓角進行調節。
二.自定義繪製方法:
下面分享一個自定義方法,它實現了圓角矩形的繪製功能。
與使用lineJoin屬性相比,它更加靈活強大。
程式碼例項如下:
[HTML] 純文字檢視 複製程式碼執行程式碼<!doctype html> <html> <head> <meta charset="utf-8"> <meta name="author" content="http://www.softwhy.com/" /> <title>螞蟻部落</title> <script> window.onload = function () { let canvas = document.getElementById("ant"); var ctx = canvas.getContext("2d"); //圓角矩形 function roundRect(x, y, w, h, r) { if (w< 2 * r) r = w / 2; if (h < 2 * r) r = h / 2; ctx.beginPath(); ctx.moveTo(x + r, y); ctx.arcTo(x + w, y, x + w, y + h, r); ctx.arcTo(x + w, y + h, x, y + h, r); ctx.arcTo(x, y + h, x, y, r); ctx.arcTo(x, y, x + w, y, r); ctx.closePath(); } roundRect(200, 300, 200, 120, 20); ctx.stroke() } </script> </head> <body> <canvas id="ant" width="600" height="550"></canvas> </body> </html>
程式碼執行效果截圖如下:
上述程式碼自定義roundRect方法實現繪製圓角矩形效果。
方法引數分析如下:
(1).x:矩形左上角的橫座標(非圓角矩形時左上角橫座標)。
(2).y:矩形左上角的縱座標(非圓角矩形時左上角縱座標)。
(3).w:矩形的寬度。
(4).h:矩形的高度。
(5).r:圓角所處圓的半徑尺寸。理解上面自定義方法的關鍵在於對它所用到方法的理解。
具體參閱如下幾篇文章:
(1).beginPath方法參閱canvas beginPath()一章節。
(2).moveTo方法參閱canvas moveTo()一章節。
(3).arcTo方法參閱canvas arcTo()一章節。
(4).closePath方法參閱canvas closePath()一章節。
肯定還有其他實現圓角矩形的方式,本文就不再探究,一方面由於懶惰。
另一方面感覺上述自定義方法已經夠用,有探索精神的朋友可以文章底部留言,分享更好的方式。
相關文章
- 微信小程式 canvas圓角矩形的繪製微信小程式Canvas
- canvas繪製圓角矩形程式碼例項Canvas
- SVG 繪製圓角矩形SVG
- canvas 繪製矩形缺角Canvas
- 原來 Canvas 也能直接繪製圓角矩形了Canvas
- canvas 繪製矩形Canvas
- iOS開發_繪製圓角矩形虛線環iOS
- canvas繪製矩形框Canvas
- canvas 繪製圓形Canvas
- iOS 繪製圓角iOS
- canvas系列教程之繪製矩形Canvas
- html5中canvas繪製矩形HTMLCanvas
- canvas實現手動繪製矩形Canvas
- canvas-座標系、圓角矩形、紋理、剪裁Canvas
- 使用canvas繪製圓弧動畫Canvas動畫
- canvas繪製不重合的圓Canvas
- canvas繪製多個圓圈效果Canvas
- css圓角矩形邊框CSS
- HTML5 Canvas ( 矩形的繪製 ) rect, strokeRect, fillRectHTMLCanvas
- canvas 繪製旋轉一定角度的矩形Canvas
- SVG繪製矩形缺角問題解決方案SVG
- visio圓角矩形怎麼改變圓角大小
- Canvas 繪製 3d 圓柱體Canvas3D
- 使用canvas繪製圓形進度條Canvas
- html5中canvas繪製圓形HTMLCanvas
- C# WinForm 繪製圓角窗體C#ORM
- canvas繪製三角形Canvas
- canvas學習筆記-繪製矩形及路徑(一)Canvas筆記
- canvas繪製旋轉一定角度的矩形效果Canvas
- canvas繪製矩形並填充顏色程式碼例項Canvas
- HTML5利用canvas繪製矩形程式碼例項HTMLCanvas
- canvas繪製圓盤走動鐘錶效果Canvas
- canvas繪製橢圓效果程式碼例項Canvas
- Python 在PDF中繪製線條、矩形、橢圓形Python
- SVG <rect> 繪製矩形SVG
- canvas繪製圓形框效果不填充內部Canvas
- canvas繪製圓形鐘錶程式碼例項Canvas
- canvas繪製實心圓形程式碼例項Canvas