暗黑模式
映射置换滤镜
前端教程SVG
<feDisplacementMap> 映射置换滤镜来自于 in2 图形的像素值替换 in 图形的像素值,输出置换后的 in 图形。
基本语法
xml
<filter id="displacementFilter">
<feTurbulence type="turbulence" baseFrequency="0.05" numOctaves="2" result="turbulence"/>
<feDisplacementMap in2="turbulence" in="SourceGraphic" scale="50" xChannelSelector="R" yChannelSelector="G"/>
</filter>1
2
3
4
2
3
4
in输入源图形in2用于替换in图形的像素scale缩放比例,值为 0 时没有效果xChannelSelector="R | G | B | A(默认)"表示 X 轴使用in2图形的哪个颜色通道yChannelSelector="R | G | B | A(默认)"表示 Y 轴使用in2图形的哪个颜色通道
置换公式:
P'(x,y) = P(x + scale * (XC(x,y) - 0.5), y + scale * (YC(x,y) - 0.5))1
- P 为
in图形种的某个原像素值 - P'为置换后的像素值
- XC(x,y) 是
in2图形在(x,y)处的某个颜色通道的值(0~1),根据xChannelSelector确定是R或G或B或A值 - YC(x,y) 是
in2图形在(x,y)处的某个颜色通道的值(0~1),根据yChannelSelector确定是R或G或B或A值 scale缩放比例
示例
以下示例中,<feTrublulence> 结合 <feDisplacementMap> 实现了动态水波效果
<feTrublulence>滤镜产生随机的噪声图形 turbulence- 注意:我们使用了
<animate>动画元素让噪声图形有了动态效果。
- 注意:我们使用了
<feDisplacementMap>将噪声图形 turbulence 和原图形(上海东方明珠)进行替换






