光栅图像中的智能填充算法

Algorithm for smart floodfill in raster image

我正在尝试为光栅图像实现洪水填充方法。 对于中心像素,它很容易并且工作正常,但问题是填充边界附近的像素,它们具有不同的颜色。

例如,如果在白色背景上绘制黑色图形,则某些边框像素将具有灰色而不是黑色(用于平滑)。

图像编辑器(如 paint.net)在填充期间修复了将这些像素更改为新旧像素之间的某种中间颜色的问题。这里我用红色填充图形,灰色像素变成红色渐变

我需要知道如何使用 RGB 像素操作将灰色像素变成要填充的颜色(这里是红色,但可以是任何颜色)的方法或算法。

感谢您的帮助。

因此,对于与示例类似的效果,我们只需要在旧颜色和新颜色之间使用 & 操作。

对于 RGB 颜色:

resultColor.R = (byte)(oldColor.R & newColor.R);
resultColor.G = (byte)(oldColor.G & newColor.G);
resultColor.B = (byte)(oldColor.B & newColor.B);

如果RGB颜色是Int数:

resultColor = oldColor & newColor;

它不会与下面示例中的颜色完全相同,但非常相似。