我在svg中使用了非常简单的高斯模糊:
<filter id="filter2" x="-10%" y="-10%" width="120%" height="120%">
<feGaussianBlur in="SourceAlpha" stdDeviation="5"/>
</filter>
此效果的两侧基本上都是15像素宽(此后的模糊效果太弱了)。
如何在过滤器尺寸(x,y,宽度,高度)中正确编码,以便可以将过滤器重用于任意元素?
特别是我有一些小圆圈(大约10像素宽)和一些更大的多边形(几百像素宽)。
x
和y
很简单,我可以将它们设置为-15
。
但是,width
和height
是一个问题。 120%
不足以容纳较小的元素,而容纳较大的元素则太多。我正在将svg转换为pdf,这会产生巨大的利润。
理想情况下,我想设置类似100% + 15px
的名称。有没有办法做到这一点?
答案 0 :(得分:0)
您不能在过滤器尺寸声明中直接使用混合尺寸(不过-SVG2可能有可能-不确定)。今天,您必须选择%或绝对单位(objectBoundingBox或userSpaceOnUse),因此,如果要在不同大小的形状上发生固定大小的溢出,则需要定义多个具有不同大小的过滤器。至少没有太多的文档重量。
一种选择是只使用默认的滤镜边距(大约为+/- 10%),并为std Deviation更改为%大小调整,如下所示:
<filter id="filter2" primitiveUnits="objectBoundingBox">
<feGaussianBlur in="SourceAlpha" stdDeviation="3%"/>
</filter>
它将以绝对术语创建可变大小的模糊-但您只需要一个滤镜声明即可。