在SVG中应用目标输出合成

亚伯拉罕

我想将目标输出合成应用于我的SVG,以便一个形状可以“擦除”其他现有形状。根据我<feComposition>SVG元素文档上阅读的内容,这应该可以工作,但是不会产生预期的结果。我试图使用该in="BackgroundImage"属性将过滤器应用于SVG文档中使用过滤器之前发生的所有事情。

<svg viewBox="0 0 100 100">
  <filter id="destination-out">
    <feComposite in="BackgroundImage" operator="out" />
  </filter>
  <polyline points="0,25 100,25" stroke="black" />
  <polyline points="0,50 100,50" stroke="black" />
  <polyline points="0,20 100,60" stroke="black" filter="url(#destination-out)" />
</svg>

这是一个jsBin,显示此代码产生的内容。我希望第三个对角线<polyline>完全不可见;相反,我希望它“擦除”它与前两个<polyline>s相交的位置。

对我而言,旧版浏览器支持并不重要。只需在最新版本的Chrome中运行即可。

迈克尔·穆兰尼

当前任何主流浏览器均不支持BackgroundImage输入类型,并且以后的浏览器不建议使用BackgroundImage。

要完成您想做的事情,您将必须通过feImage输入要在过滤器中使用的形状作为SourceGraphic输入,以及要用作第二输入的形状。feImage在除Firefox之外的任何地方都支持直接片段引用,因此要获得全面的跨浏览器支持,您将需要在feImage中内嵌该形状作为单独的SVG数据URI。

这是适用于非Firefox的版本。

<svg width="100px" height="100px" viewBox="0 0 100 100">
<defs>
  <polyline id="second-shape" points="0,20 100,60" stroke="black" stroke-width="3"/>

  <filter id="destination-out">
   <feImage x="0" y="0" width="100" height="100" xlink:href="#second-shape"/>
   <feComposite in="SourceGraphic" operator="out" />
  </filter>

  </defs>
  <g filter="url(#destination-out)" >
  <polyline points="0,25 100,25" stroke="red" />
  <polyline points="0,50 100,50" stroke="blue" />
  </g>

</svg>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用目标输出合成在EaselJS中擦除位图的某些部分

目标C中的测验应用

xev输出中的“合成”是什么意思?

目标文件的objdump输出中的标志

在Xcode中显示多个目标输出

Scala中的应用函子与Monad合成性能

如何应用相对于原始 SVG 而不是目标元素的 SVG 剪辑路径

无法在HTML SVG中获取输出

在makefile中更改目标文件的输出路径

深度学习中的目标列编码和输出层

fabric.js中的文本掩码(目标输出)

将资源目录包含到 Quarkus 目标输出中

整数输出在合成ISE中变为二进制

Python - 从“for循环”中获取单个浮点类型输出并组合成一个列表

在以合成为目标的VHDL中编码时,是否有必要将组合逻辑与顺序逻辑分开?

如何摆脱应用输出中的“NULL”?

无法了解Android应用中的日志输出

Solidity中的对象合成

JavaScript中的Unicode合成

'发现了合成属性@panelState。请在您的应用程序中包含“ BrowserAnimationsModule”或“ NoopAnimationsModule”。

找到了合成属性@enterAnimation。请在您的应用程序中包括“ BrowserAnimationsModule”或“ NoopAnimationsModule”。角度4

Angular 7- Custom Toastr - 发现合成属性@flyInOut。在您的应用程序中包含 BrowserAnimationsModule

如何在OSX上的C ++应用程序中播放合成声音?

SVG填充未在FireFox中应用

如何使用目标C杀死iPhone中的应用

在.NET Core应用中确定运行时目标(OS)

应用目标名称中的非ASCII字符

Coq:如何在目标中更深入地应用公理?

默认应用程序(目标C)中的Init在哪里?