canvas 繪製矩形缺角
繪製矩形的方式有多種,具體參閱canvas繪製矩形簡單介紹一章節。
本文介紹一下使用lineTo方法繪製矩形時出現的一個怪異現象。
那就是矩形的一角出現殘缺,程式碼例項如下:
[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.moveTo(100, 100); ctx.lineTo(200, 100); ctx.lineTo(200, 200); ctx.lineTo(100, 200); ctx.lineTo(100, 100); ctx.strokeStyle = 'rgba(255,0,0)'; ctx.stroke(); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
程式碼執行效果截圖如下:
很明顯上面矩形的左上側出現了缺角現象。
特別說明:此現象也具有瀏覽器相容問題,當前(2018-9-29),在較新版本谷歌瀏覽器中顯示一切正常,在edge或者火狐等瀏覽器會出現缺角,本文的主要目的是告訴讀者,lineTo方式繪製矩形可能會出現此現象,並鞏固繪製線條所涉及的知識,具體哪些瀏覽器會出現,感興趣的可以自行測試。
一.出現缺角分析如下:
在canvas lineWidth繪製原理一章節介紹了canvas繪製線條的原理。
於是通過lineTo方法繪製四條邊原理上出現如下效果:
但是為什麼只有左上角看起來是比較"原生"一點,其他三個角則比較圓滑呢。
這是因為從moveTo方法規定的點開始進行繪製,從第一個點到第五個點繪製是連貫的。
但是第五個點是結束點,不能說第五個點到第一個點之間是連貫的,注意順序。
只能說這兩個點恰好重合,所以左上角就顯得非常"原生"。
那麼只要我們讓它們之間連貫起來就好了,程式碼修改如下:
[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.moveTo(100, 100); ctx.lineTo(200, 100); ctx.lineTo(200, 200); ctx.lineTo(100, 200); ctx.lineTo(100, 100); ctx.closePath(); ctx.strokeStyle = 'red'; ctx.stroke(); } </script> </head> <body> <canvas id="canvas" width="400" height="300"></canvas> </body> </html>
程式碼執行效果截圖如下:
解決方案非常簡單使用closePath方法閉合子路徑即可。
關於closePath方法的使用可以參閱canvas closePath()一章節。
相關文章
- canvas 繪製圓角矩形Canvas
- canvas 繪製矩形Canvas
- 微信小程式 canvas圓角矩形的繪製微信小程式Canvas
- 原來 Canvas 也能直接繪製圓角矩形了Canvas
- canvas繪製矩形框Canvas
- SVG 繪製圓角矩形SVG
- canvas系列教程之繪製矩形Canvas
- canvas實現手動繪製矩形Canvas
- iOS開發_繪製圓角矩形虛線環iOS
- canvas學習筆記-繪製矩形及路徑(一)Canvas筆記
- SVG <rect> 繪製矩形SVG
- canvas 繪製扇形Canvas
- canvas 繪製文字Canvas
- canvas-座標系、圓角矩形、紋理、剪裁Canvas
- canvas 繪製圓形Canvas
- canvas繪製流星效果Canvas
- canvas繪製直線Canvas
- canvas lineWidth 繪製原理Canvas
- canvas lineWidth繪製原理Canvas
- canvas 繪製線條Canvas
- JavaScript拖動滑鼠繪製矩形方框JavaScript
- iOS 繪製圓角iOS
- canvas 繪製雙線技巧Canvas
- canvas繪製風車效果Canvas
- canvas 繪製文字詳解Canvas
- canvas繪製笑臉表情Canvas
- Canvas 繪製雷達圖Canvas
- CAD如何繪製固定面積的矩形
- CAD繪製帶角度的矩形陣列陣列
- canvas 虛線矩形Canvas
- canvas矩形拖拽效果Canvas
- canvas繪製不重合的圓Canvas
- canvas繪製sin正弦曲線Canvas
- Canvas(3)---繪製餅狀圖Canvas
- 用canvas繪製流星夜空Canvas
- canvas 繪製立體圓環Canvas
- canvas繪製動畫的技巧Canvas動畫
- canvas繪製圖案是重疊繪製而不是重置Canvas