2013-05-16 32 views
0

我正在开发一个绘画应用程序,其中我将有不同的图像不规则的对象,如动物,花卉等..我希望当用户开始使用颜色绘画时,颜色不应该出现在边界的那边object..help我在检测不规则的身体对象的边界...如何检测不规则形状的边界?

+0

https://github.com/chinatndave/UIImageScanlineFloodfill – CRDave

回答

2

你在找什么是一个2d洪水填充算法。一旦你理解了算法的递归性质,这很简单。在这里发布代码将占用太多的空间。有一个关于这个在这里一个伟大的文章:

QuickFill Article

我只是重读你的问题。以上内容会有所帮助,但您可能只想使用遮罩层和可编辑图层。制作图层将在“可编辑”图层上绘制,具有用户可以绘制的完整透明度。

+0

感谢您的回复,但我不希望它被一次填满,而是当用户将他/她的手指移动到图像上时。手指的移动......预先感谢 – user2389921

+1

在这种情况下,是的,使用两个图层,一个用户可以绘制,另一个绘制在此图层上。这将模拟保持用户“在线”。 –

+0

如果像素可以容纳更多信息,则每个像素可以有一个“边界”标记。在拖动事件中绘制像素(如果它不是边界并且至少有一个邻居已被绘制)(每个笔划的第一个像素在触摸事件中绘制)。 – Renan

0

您需要低通滤波器(检测,但不能更改)或解决方案。

+0

感谢您的回复,但我不希望它一次全部填满,而是因为用户将他/她的手指移动到图像上。手指的移动......预先感谢 – user2389921

+0

而这就是低过滤器进来的地方。在处理用户拖动的情况下,如果满足这些条件,则绘制一个像素:它之前未被绘制,至少有一个邻居被绘,画的邻居不会突然改变颜色信息。或者,如果所有的边界都是相同的颜色,那么您只需在那里停止着色。 – Renan