canvas miterLimit 屬性
miterLimit屬性可以設定或者返回最大斜接長度,預設值為10.0。
上面是當前絕大多數canvas教程對於此屬性的闡述。
可以很負責任的說,上述闡述並不完全正確,甚至可以說是錯誤的,本文將做一下糾正。
看如下圖示:
miterLimit屬性就是用來設定或者返回內角與外角之間的可允許的最大距離。
但是需要注意如下兩點:
(1).此屬性僅對lineJoin屬性值為"miter"時有效。
(2).為miterLimit屬性設定的值或者返回的值並不是內角與外角的絕對值,而是一個比率。
語法結構:
[JavaScript] 純文字檢視 複製程式碼context.miterLimit=number
引數解析:
(1).number:一個數字,設定最大斜接的長度的比率。
既然是比率,必然有一個參考值,答案就是以lineWidth屬性值為參考。
關於lineWidth具體用法可以參閱canvas lineWidth繪製原理一章節。
瀏覽器相容:
(1).IE9+瀏覽器支援此屬性。
(2).edge瀏覽器支援此屬性。
(3).谷歌瀏覽器支援此屬性。
(4).火狐瀏覽器支援此屬性。
(5).Opera瀏覽器支援此屬性。
(6).Safari瀏覽器支援此屬性。
程式碼例項如下:
[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"); let ctx=canvas.getContext("2d"); ctx.beginPath(); ctx.lineWidth=10; ctx.lineJoin="miter"; ctx.moveTo(20,20); ctx.lineTo(100,50); ctx.lineTo(20,100); ctx.stroke(); } </script> </head> <body> <canvas id="ant"></canvas> </body> </html>
上述程式碼並沒有顯式設定miterLimit屬性值,預設為10。
程式碼執行效果截圖如下:
當miterLimit屬性值為10的時候,尖角可以完整的顯示。
現在問題來了,也是網上很多教程有誤的地方,很明顯內角與外角之間的水平距離已經超過10px。
但是為什麼還能完整顯示呢,這是因為miterLimit屬性值是一個比率,而不是絕對值。
是相對於lineWidth的比率,由此上述程式碼設定內角與外角之間所允許的最大尺寸是10x10=100px。
[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"); let ctx=canvas.getContext("2d"); ctx.beginPath(); ctx.lineWidth=10; ctx.lineJoin="miter"; ctx.miterLimit=2; ctx.moveTo(20,20); ctx.lineTo(100,50); ctx.lineTo(20,100); ctx.stroke(); } </script> </head> <body> <canvas id="ant"></canvas> </body> </html>
程式碼執行效果截圖如下:
上述程式碼將miterLimit屬性值修改2,那麼所允許的最大尺寸就是2x10=20px。
內角與外角之間的尺寸超出20px的部分將會被切去。
效果與lineJoin屬性值為bevel時的效果完全一致。
相關文章
- canvas shadowBlur 屬性Canvas
- canvas shadowColor 屬性Canvas
- canvas lineJoin 屬性Canvas
- canvas lineCap 屬性Canvas
- canvas font 屬性Canvas
- canvas globalAlpha 屬性Canvas
- canvas shadowOffsetY 屬性Canvas
- canvas shadowOffsetX 屬性Canvas
- canvas lineWidth 屬性Canvas
- canvas textBaseline 屬性Canvas
- canvas globalCompositeOperation 屬性Canvas
- canvas ImageData data 屬性Canvas
- canvas ImageData height 屬性Canvas
- canvas ImageData width 屬性Canvas
- canvas ImageData.data 屬性Canvas
- canvas ImageData.height 屬性Canvas
- canvas ImageData.width 屬性Canvas
- CSS 與 canvas 屬性設定畫布尺寸CSSCanvas
- CSS與canvas屬性設定畫布尺寸CSSCanvas
- CMake 屬性之全域性屬性
- defer 屬性和 async 屬性
- CSS 屬性篇(七):Display屬性CSS
- CMake 屬性之目錄屬性
- CMake 屬性之目標屬性
- Python - 物件導向程式設計 - 公共屬性、保護屬性、私有屬性Python物件程式設計
- CSS字型屬性和文字屬性詳解CSS
- Python 類的屬性與例項屬性Python
- python物件屬性管理(2):property管理屬性Python物件
- 根據屬性字串獲取屬性值字串
- CAD屬性編輯操作——物件屬性教程物件
- cssRules 屬性CSS
- previousElementSibling 屬性
- translucent屬性
- parentRule 屬性
- parentStyleSheet屬性
- cssText 屬性CSS
- Property屬性
- 私有屬性