虽然 SVG 不是一种位图描述语言,但它仍然允许我们使用一些相同的工具。当 SVG 阅读器程序处理一个图形对象时,它会将对象呈现在位图输出设备上;在某一时刻,阅读器程序会把对象的描述信息转换为一组对应的像素,然后呈现在输出设备上。
SVG 滤镜的用法如下:
<filter id="f1" x="0%" y="-500%" width="1000%" height="1000%"></filter>
<path class="st1" style="filter:url(#f1)" stroke="url(#linear)" d="M-556,2050.5l123-52l53,8l32-14"/>
用 SVG 的
SVG 滤镜的用处在于可以创建投影效果。
投影
起始和结束
<filter id="">
<feGaussianBlur in="sourceAlpha" stdDeviation="2" />
</filter>>
指定输入源用 in 属性,用 stdDeviation 属性指定模糊度,数值越大,模糊度越大。如果给 stdDeviation 提供两个有空格分隔的数字,第一个数字表示 x 方向的模糊度,第二个数字表示 y 方向的模糊度。
滤镜返回的是模糊单元,而不是原始图形。要实现原始图形加上投影的效果,需要添加更多的滤镜单元。
存储、链接、合并滤镜效果
<filter id="f1" x="0%" y="-500%" width="1000%" height="1000%">
<feOffset result="offOut" in="SourceGraphic" dx="5" dy="5" />
<feGaussianBlur result="blurOut" in="offOut" stdDeviation="8" />
<feMerge>
<feMergeNode in="blur"/>
<feMergeNode in="SourceGraphic" />
</feMerge>
</filter>
发光式投影
<feColorMatrix type="matrix" values=
"0 0 0 0 0
0 0 0 0.9 0
0 0 0 0.9 0
0 0 0 1 0
" />
当黑色文本也需要投影时,可以用
values=
"0 0 0 red 0
0 0 0 green 0
0 0 0 blue 0
0 0 0 1 0"
关于矩阵的原理这里就不详细说明了。
这些是目前接触到的滤镜,后续了解更多之后再做补充。