SVG <polygon>
SVG 多邊形 - <polygon>
例項 1
<polygon> 標籤用來建立含有不少於三個邊的圖形。
多邊形是由直線組成,其形狀是"封閉"的(所有的線條 連接起來)。
polygon來自希臘。 "Poly"
意味 "many" , "gon" 意味 "angle".
下面是SVG程式碼:
範例
<svg height="210" width="500">
<polygon points="200,10 250,190 160,210"
style="fill:lime;stroke:purple;stroke-width:1"/>
</svg>
線上執行 ?
對於Opera使用者: 檢視SVG檔案(右鍵單擊SVG圖形預覽源)。
程式碼解析:
- points 屬性定義多邊形每個角的 x 和 y 坐標
例項 2
下面的範例建立一個四邊的多邊形:
下面是SVG程式碼:
範例
<svg height="250" width="500">
<polygon points="220,10 300,210 170,250 123,234" style="fill:lime;stroke:purple;stroke-width:1" />
</svg>
線上執行 ?
對於Opera使用者: 檢視SVG檔案(右鍵單擊SVG圖形預覽源)。
例項 3
使用 <polygon> 元素建立一個星型:
下面是SVG程式碼:
範例
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:nonzero;" />
</svg>
線上執行 ?
對於Opera使用者: 檢視SVG檔案(右鍵單擊SVG圖形預覽源)。
例項 4
改變 fill-rule 屬性為 "evenodd":
下面是SVG程式碼:
範例
<svg height="210" width="500">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;" />
</svg>
線上執行 ?
對於Opera使用者: 檢視SVG檔案(右鍵單擊SVG圖形預覽源)。
沒有水的木
257***1053@qq.com
參考地址
SVG的圖形填充規則透過fill-rule屬性來指定。
fill-rule
fill-rule 屬性用於指定使用哪一種演演算法去判斷畫布上的某區域是否屬於該圖形「內部」 (內部區域將被填充)。對一個簡單的無交叉的路徑,哪塊區域是「內部」 是很直觀清除的。但是,對一個複雜的路徑,例如自相交或者一個子路徑套件圍另一個子路徑,「內部」的理解就不那麼明確了。
fill-rule 屬性提供兩種選項用於指定如何判斷圖形的「內部」:
nonzero
字面意思是「非零」。按該規則,要判斷一個點是否在圖形內,從該點作任意方向的一條射線,然後檢測射線與圖形路徑的交點情況。從0開始計數,路徑從左向右穿過射線則計數加1,從右向左穿過射線則計數減1。得出計數結果後,如果結果是0,則認為點在圖形外部,否則認為在內部。下圖演示了nonzero規則:
點選檢視範例SVG檔案 (僅適用於支援SVG的瀏覽器)
evenodd
字面意思是「奇偶」。按該規則,要判斷一個點是否在圖形內,從該點作任意方向的一條射線,然後檢測射線與圖形路徑的交點的數量。如果結果是奇數則認為點在內部,是偶數則認為點在外部。下圖演示了evenodd 規則:
點選檢視範例SVG檔案 (僅適用於支援SVG的瀏覽器)
提示: 上述解釋未指出當路徑片段與射線重合或者相切的時候怎麼辦,因為任意方向的射線都可以,那麼只需要簡單的選擇另一條沒有這種特殊情況的射線即可。
沒有水的木
257***1053@qq.com
參考地址