svg - 如何使用元素作为过滤器源?

标签 svg svg-filters

我想使用我在 <defs> 中定义的元素作为另一个元素过滤器的源输入。

我的目标是用两种形式进行复合:一种是我应用过滤器,另一种是应用过滤器。

我期待这能奏效,但它没有:

<defs>
  <rect id="shape1" (...) />

  <filter id="f1">
    <feComposite in="SourceGraphic" in2="#shape1" operator="xor" />
  </filter>
</defs>
<circle id="shape2" filter="url(#f1)" (...) />

如何更换 in2="#shape1"为了使它工作?

最佳答案

您不能像这样直接在过滤器的“in”属性中引用形状。你必须先用

<feImage .... result="myShape1"> 

然后将其引用为 in2="myShape1"。 IE10 与 webkit 的行为不同,它们以这种方式处理被拉入过滤器的文档内元素。 Webkit/blink 符合规范,因为它们将 feImage 中声明的任何 x,y 视为对原始元素的 x,y 坐标的附加变换。 IE10 似乎用新坐标替换了原始元素的 x,y 坐标。

关于svg - 如何使用元素作为过滤器源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16238697/

相关文章:

javascript - Chrome 在隐藏和显示父 DIV 容器时重新加载嵌入式 SVG 对象

javascript - getBoundingClientRect() 在 Chrome 中为复杂的 SVG 返回不准确的值

javascript - 如何在页面上的网页元素之间绘制连接线

canvas - 使用 SVG 滤镜替换一种颜色

css - 在 css 或 svg 中创建圆形运动模糊

svg - 如何制作 svg 散点滤镜?

svg - 是否可以将变换矩阵应用于 SVG 滤镜效果

jquery - 动态分组 SVG 元素

html - 在悬停时更改 css background-image svg 绘制行为?

image - 有一个使用 2 个过滤器的 SVG 元素