我正在尝试在SVG中绘制一个带阴影的简单圆圈,但由于某种原因,顶部和左侧边缘被剪裁。这在Chrome和Safari中都会发生。
我正在使用我在w3schools教程SVG Drop Shadows中找到的代码,修改为使用圆圈代替。
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
<defs>
<filter id="f1" x="0" y="0" width="200%" height="200%">
<feOffset result="offOut" in="SourceAlpha" dx="2" dy="2" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="1" />
<feBlend in="SourceGraphic" in2="blurOut" mode="normal" />
</filter>
</defs>
<circle r="30" cx="50" cy="50" style="stroke:gray; fill:aliceblue; stroke-width:3px" filter="url(#f1)" />
</svg>
我尝试移动圆圈,增加SVG容器的大小等,但得到了相同的结果。我还尝试使用Google搜索各种Drophadow教程,并始终修改示例代码以使用圆圈。每次都有相同的结果。
那么如何在SVG中绘制带有阴影的简单圆圈?
答案 0 :(得分:17)
原来问题在于滤波器的偏移。圆圈周围没有足够的衬垫以容纳新添加的滤镜。要添加此项,请使用以下属性(根据需要进行调整):
<filter id="f1" x="-20%" y="-20%" width="200%" height="200%">
x和y将用于过滤器的框放在左边,这是之前缺少的。然后宽度和高度指定框大小。在这种情况下,200%是过度杀伤,但可能需要更大的阴影。
答案 1 :(得分:2)
替换这个:
<filter id="f1" x="0" y="0" width="200%" height="200%">
对此:
<filter id="f1" x="-40%" y="-40%" height="200%" width="200%">