首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在一个低质量的SVG掩模显示锯齿状边缘,有任何方法来修复使用抗混叠?

在一个低质量的SVG掩模显示锯齿状边缘,有任何方法来修复使用抗混叠?
EN

Stack Overflow用户
提问于 2016-04-18 23:53:21
回答 1查看 1.1K关注 0票数 3

我制作了一个SVG面具动画。我遇到的问题是SVG的边缘是“锯齿状的”,当动画出现时,我可以看到蒙版周围有一个轻微的黑色边缘。)它很小。我看过质量更好的GIF动画。使用SVG,我认为它会更干净)。

寻找更软边的解决方案。如果这意味着我需要使用PNG面具或应用某种类型的过滤效果?任何解决办法我都会高兴的。

CODEPEN

代码语言:javascript
复制
<mask id="text-mask">
<use x="0" y="0" xlink:href="#text" opacity="1" fill="#fff"/>
</mask>

<use x="0" y="0" xlink:href="#text" fill="#0d0d0d"/>

<rect class="water-fill" mask="url(#text-mask)" fill="url(#water)" x="-400"     y="0" width="6000" height="650"/>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-19 05:51:15

你看到“锯齿状边缘”深色轮廓的原因是你做SVG的方式。您正在将黑色文本路径的两个副本堆叠在自己的上面。然后你把红色的水动画放在上面。

您的SVG如下所示:

代码语言:javascript
复制
<svg>
   <path with QURE (black)>
   <use that path again (black)>
   <water animation (red) using that path as a mask>
</svg>

您有三个反别名的元素直接堆叠在一起。其中两个是黑色的,一个是红色的。因此,在形状的边缘,你得到一个混合的黑色和红色半透明像素。

您可以通过将第一个<path>定义放在<defs>部分中以避免呈现,从而大大改善外观。

这让你有了这样的安排:

代码语言:javascript
复制
<svg>
   <use path with QURE shape (black)>
   <water animation (red) using that path as a mask>
</svg>

这很有帮助,但仍然在形状的边缘留下黑色和红色像素的混合。通过不绘制红色动画后面的黑色文本,您可以更好地改善外观。

要取得最好的效果,必须作出以下安排:

代码语言:javascript
复制
<svg>
  <g with QURE mask>
    <black rectangle background>
    <water animation (red)>
  </g>
</svg>

有了这样的安排,我们只将面罩一次应用于混合的黑水和红水动画。因此,您应该没有黑色锯齿边框,因为现在只有一组反别名像素。

演示代码与这些更改应用。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36706210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档