您必須使用路徑元素上開一個洞。
見the example from the SVG specification:(您可以點擊此鏈接或以下圖片查看真正的SVG文件)
<g fill-rule="evenodd" fill="red" stroke="black" stroke-width="3">
<path d="M 250,75 L 323,301 131,161 369,161 177,301 z"/>
<path d="M 600,81 A 107,107 0 0,1 600,295 A 107,107 0 0,1 600,81 z
M 600,139 A 49,49 0 0,1 600,237 A 49,49 0 0,1 600,139 z"/>
<path d="M 950,81 A 107,107 0 0,1 950,295 A 107,107 0 0,1 950,81 z
M 950,139 A 49,49 0 0,0 950,237 A 49,49 0 0,0 950,139 z"/>
</g>
對於您的情況:
<path d="M10 10h50v50h-50z M23 35a14 10 0 1 1 0 0.0001 z"
stroke="blue" stroke-width="2" fill="red" fill-rule="evenodd" />
M10 10h50v50h-50z
將繪製一條直線。
M25 35a10 10 0 1 1 0 0.0001 z
將繪製一個橢圓。
fill-rule="evenodd"
會造成漏洞。
重點是繪製不同方向(順時針與逆時針)的外部形狀和內部形狀(孔)。
- 順時針繪製外部形狀並逆時針繪製內部(孔)形狀。
- 或者相反,逆時針繪製外形(孔)並順時針繪製內部形狀。
- Concat外部形狀和內部形狀(孔)的路徑數據。
您可以通過連接更多的孔路徑數據來切割更多的孔。
此圖片講解如何開一個洞:
見W3C文檔: SVG Arc Commands 和 SVG fill-rule Property。
我的答案是否真的回答你的問題?我想知道你是否有這種形狀的工作,或者你是否像使用規範的例子那樣使用了路徑。 – 2009-12-31 22:40:07
我打算使用路徑。 – user4891 2010-01-03 16:07:52