请马上登录,朋友们都在花潮里等着你哦:)
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 马黑黑 于 2023-10-16 20:15 编辑
mdn 这么解释 feTile 滤镜:输入图像是平铺的,结果用来填充目标。它的效果近似于一个 <pattern> 图案对象。
pattern 是一个 svg 标签,它并不简单,这里先不解释。我们要弄明白的是,滤镜 feTile 是怎么工作的。tile 作为动词的意思是,用瓦片、瓷砖铺设,fe 是 svg 滤镜前缀,所以 feTile 滤镜就是将图形平铺于对象之上。mdn 没有给出该滤镜的示例,让我勉为其难,在 400*400 的 svg 画布中心上绘制一个半径为 190px 的圆,该圆拥有自己的填充颜色,但是因为绑定了预设滤镜,填充色失效,取而代之的是以滤镜预设的图案平铺了圆对象,而且效果是,圆不再是圆,而是矩形!为什么会这样?这是因为,feTile 作用的对象是矩形,不管对象是不是矩形,最终结果都是矩形。
以下代码,滤镜 id 标识为 tile,其内的第一个滤镜是图像滤镜,预设了图像从 {0,0} 开始,宽高尺寸各为 100px,第二个滤镜是瓦片滤镜,它作用于 feImage 滤镜,作用位置从 {0,0} 开始,宽高尺寸各为 100%。circle 标签绘制一个圆,绑定滤镜 tile,最终,圆的填充色(fill)设置失效,填充内容被绑定的滤镜替代。
<svg width="400" height="400" style="border: 1px solid gray;">
<filter id="tile">
<feImage x="0" y="0" width="100" height="100" href="https://638183.freep.cn/638183/t23/btn/hshx.png" result="img"></feImage>
<feTile x="0" y="0" width="100%" height="100%" in="img"></feTile>
</filter>
<circle cx="200" cy="200" r="190" fill="steelblue" filter="url(#tile)" />
</svg>
运行效果:
【附】原图:

|