2012-10-29 56 views
0

所以我正在制作一个程序,可以加载图像并填充图像中的形状3种不同的颜色(该程序用于为不同颜色的房地产绘图着色,颜色为红色, 黄绿色。)。我可以加载图像,保存并在图片上绘制,但我的问题是,什么是填充整个形状的代码。形状是随机的。我知道有.FillRectangle和.FillEllipse什么不是,但我需要一个是油漆桶工具。任何帮助,将不胜感激。Visual Basic 2010中的着色形状

+0

在vbforums上有几个相关的命中:http://www.vbforums.com/showthread.php?317585-Flood-Fill-Paint-Bucket-Tool和http://www.vbforums.com/showthread .php?482232-MS-Paint-Fill-Bucket-how-it-work – JYelton

+0

好的谢谢。这是有效的,但无论如何,但是当我去着色jpeg上的情节时,它并没有完全消失,它只是充满了一个模糊的地方。所有的帮助表示赞赏。 – Brandon

回答

0

我没有任何功能.NET代码给你,但我可以提供一些想法,因为我在平面设计工作多年。

油漆桶工具的工作方式与“魔杖”工具类似。如果您在Adobe Photoshop中熟悉这些工具,则可能会了解影响其行为的一些参数。 (公差,连续,抗混叠等)

当您单击图像中的给定像素时,这些工具中的任何一个都必须分析周围的像素以确定相似性。该工具的其中一个选项控制比较被认为“相似”或“不相似”的阈值。

想象一下,您正在使用黑白(1位)图像。如果单击一个白色像素,则可以简单快速地确定该点是否与任何其他白色像素相邻。您可以级联比较,直到找不到更多的白色像素,然后填充(或选择)该区域。

但是,现在考虑一个8位灰度图像。如果单击一个白色(255)像素,则可能会有相邻像素非常轻但不完全相同(例如值250-254)。是否应填充/选择这些相似但不相同的颜色应基于相似性阈值。

JPG图像采用有损压缩算法,该算法引入了对其他类似颜色的轻微变化。这导致“模糊”区域不能使用低容差值进行填充或选择。为了获得理想的效果,您需要考虑与原始像素的偏差有限。

+0

因此,如果我使用的图片永远不是jpeg,那么可以解决我的问题吗? – Brandon

+0

它可以帮助。如果要填写的区域的值相同,则可以省略处理容差的代码。一些不会引入变化的图形格式是PNG,TIF和BMP。 – JYelton