首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >泛洪填充算法,考虑了alpha而不在抗锯齿线周围留下条纹?

泛洪填充算法,考虑了alpha而不在抗锯齿线周围留下条纹?
EN

Stack Overflow用户
提问于 2011-05-22 20:13:49
回答 1查看 1.1K关注 0票数 2

我已经实现了一个典型的泛洪填充算法,当我使用ARGB组件之间的欧几里得距离来比较颜色时,它可以像预期的那样使用纯色。

我的问题是,如果你在透明背景上绘制一条抗锯齿的红线,我的泛洪填充算法不会填充大多数半透明像素,而是在对象周围留下条纹。具体地说,对于该示例,线的中心是实心红色(即ARGB格式的(255,255,0,0)),并且线的条纹也是实红的,但是这些像素的α范围下至1%α(即(1,255,0,0) )。一般来说,我希望能够绘制一个抗锯齿的圆圈轮廓,泛洪填充中心,而不是留下边缘。

我使用什么函数来比较颜色和/或如何调整泛洪填充算法,使这些条纹不会留在物体周围?

我试着告诉算法总是填充一个像素,如果它的alpha <90%,这有时看起来还可以,但它在填充模糊的线条时太激进了。

编辑:为了详细说明这是什么样子,其中0-5表示红色像素0,20,40,60,80和100% alpha,抗锯齿红线的图像可能如下所示:

0 0 0

0 0 0 3 0 0 0

0 0 3 5 3 0 0

0 0 3 5 3 0 0

0 0 3 5 3 0 0

0 0 0 3 0 0 0

0 0 0

我目前的泛洪填充算法在左上角填充红色,将所有的0替换为5。剩下的3在线条周围形成一个丑陋的光环。

EN

回答 1

Stack Overflow用户

发布于 2011-05-22 21:56:41

整体应用填充应替换颜色的RGB部分,但保留原始alpha。这样你就可以在不改变混合比例的情况下获得新的颜色。

(如果位图使用预乘alpha,则应按现有alpha缩放替换RGB,但在示例中,不使用预乘alpha。)

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

https://stackoverflow.com/questions/6087838

复制
相关文章

相似问题

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