【发布时间】:2019-10-01 21:55:00
【问题描述】:
我尝试绘制一个带有必须减少的路径的形状,就像在这个解决方案Find Parallel or Offset SVG path 中一样 我使用过滤器“侵蚀”,但使用图案它不起作用:图案变形了。
有没有办法在没有 bezier.js 解决方案的情况下使用纯 SVG/CSS 来做到这一点?
这是我的问题的一个示例 我想要右边的形状和左边的图案。
<!DOCTYPE html>
<html>
<body>
<svg>
<defs>
<pattern id="circ" x="0" y="0" width="30" height="30" patternUnits="userSpaceOnUse">
<rect fill="blue" width="100%" height="100%" />
<circle cx="10" cy="10" r="10" fill="green" />
</pattern>
<filter id="erode">
<feMorphology in="SourceGraphic" operator="erode" radius="10"/>
</filter>
<path id="thing" d="M 0,0 H 50 A 35,35 0 1 0 100,50 V 75 C 50,125 0,85 0,85 Z" />
</defs>
<use href="#thing" fill="url(#circ)" width="400" height="400" filter="#erode"/>
<use x="100" href="#thing" filter="url(#erode)" fill="url(#circ)" width="400" height="400" />
</svg>
</body>
</html>
【问题讨论】:
-
这取决于您使用的模式。对于许多模式,仍然可以单独使用过滤器并使用更多原语。请将您要执行此操作的 SVG 代码发布到。
-
我用 sn-p 编辑了我的问题来说明我的问题。谢谢@MichaelMullany
-
我觉得是这个滤镜的一个特点(光栅化缩减)
-
想出了如何解决浏览器错误...发布了答案
标签: svg svg-filters