您必须使用路径元素上开一个洞。
见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