【发布时间】:2018-02-11 13:23:07
【问题描述】:
当我试图理解 SVG 中的 fill-rule 时,我看到了以下 svg 形状
<div class="contain-demo">
<svg width="250px" height="250px" viewBox="0 0 250 250">
<desc>Yellow star with intersecting paths to demonstrate evenodd value.</desc>
<polygon fill="#F9F38C" fill-rule="evenodd" stroke="#E5D50C" stroke-width="5" stroke-linejoin="round" points="47.773,241.534 123.868,8.466 200.427,241.534 7.784,98.208 242.216,98.208 " />
</svg>
</div>
请注意以下几点:
- SVG 只有一条路径。
- SVG 有交叉点。
- 如果我更改 fill-rule="nonzero" 整个 SVG 就会得到填充。
- 目前在 fill-rule="evenodd" 应用后,SVG 的中心区域没有得到填充。
为什么 fill-rule="evenodd" 星形 SVG 的中心部分没有被填充?
我确实阅读了fill-rule="evenodd" 的规范
此值通过以下方式确定形状中点的“内部” 从那个点向任意方向画一条射线到无穷远,并且 计算射线从给定形状的路径段数 十字架。如果这个数字是奇数,点在里面;即使, 点在外面。
但是我还是不明白为什么我申请fill-rule="evenodd"的时候,星星中间没有填满。有人可以解释一下吗?
【问题讨论】:
-
你的评论现在有意义了!
标签: svg