iPhone中的洪水填充

iPhone中的洪水填充,iphone,colors,flood-fill,Iphone,Colors,Flood Fill,我对iPhone开发非常陌生。我想在iPhone中使用FloodFill算法创建一个应用程序。很抱歉,我不知道洪水会怎样。请给我解释一下泛洪填充算法的用途。如果你给我一个泛洪填充的示例应用程序(iPhone),这意味着我真的非常高兴。因为我从早上开始就在探索泛洪填充,但我什么也没找到 我的任务是,我想用颜色一部分一部分地填充图像。这意味着,如果我选择一种颜色,点击图像的特定区域,意味着它将使用所选颜色着色 请帮我做这个 编辑:我无法为iPhone的floodfill算法实现编写代码。这是一个递归

我对iPhone开发非常陌生。我想在iPhone中使用FloodFill算法创建一个应用程序。很抱歉,我不知道洪水会怎样。请给我解释一下泛洪填充算法的用途。如果你给我一个泛洪填充的示例应用程序(iPhone),这意味着我真的非常高兴。因为我从早上开始就在探索泛洪填充,但我什么也没找到

我的任务是,我想用颜色一部分一部分地填充图像。这意味着,如果我选择一种颜色,点击图像的特定区域,意味着它将使用所选颜色着色

请帮我做这个


编辑:我无法为iPhone的floodfill算法实现编写代码。

这是一个递归算法,意味着它调用自己来完成整个过程的较小部分

整体填充将从一个像素开始。然后它将检查四个相邻像素(上、下、左、右)。对于与我们开始使用的颜色相同的四个像素中的任何一个,它将从该像素开始调用另一个泛光填充

想象一幅小照片。是一种颜色,X是另一种颜色。这些数字仅供参考,因此7,0是右上角。(忽略红色/黑色灯光!)

现在想象你在3,3开始洪水填充。它将改变3,3到新的颜色。 然后它会检查上、下、左、右。 对于up(3,2),那里的颜色是相同的(一个点),因此它将从那里开始另一次泛光填充。 对于down(3,4),颜色不同,因此该分支将停止。 左侧(2,3)和右侧(4,3)也是相同的(一个点),因此洪水填充的更多分支从那里开始

假设新的颜色是O,那么我们现在有:

 01234567
0........
1.XXXX...
2.X.OX...
3.XOOOX..
4.XXX..X.
5...X..X.
6...XXX..
7........
 01234567
0........
1.XXXX...
2.XOOX...
3.XOOOX..
4.XXXO.X.
5...X..X.
6...XXX..
7........
“向上”分支从(3,2)开始新的洪水填充。 从这里开始,向上是X,所以停止。右边是X,所以停止,下面是O,所以停止,但左边(2,2)是相同的(一个点),所以它从那里开始一个新的洪水填充

类似地,原始洪水填充的“右”分支从(4,3)开始。它可以使用的唯一分支是down(4,4)。现在我们有了这个:

 01234567
0........
1.XXXX...
2.X.OX...
3.XOOOX..
4.XXX..X.
5...X..X.
6...XXX..
7........
 01234567
0........
1.XXXX...
2.XOOX...
3.XOOOX..
4.XXXO.X.
5...X..X.
6...XXX..
7........
因此,洪水从(4,4)开始,通过向右和向下分支继续。这两个分支中的一个将分支为(5,5)。到那时,就不会再有分支机构了

这是我的午餐时间:)

您应该按照以下步骤编写自己的实现


希望这有帮助

这是一个非常奇怪的问题。你是说:

  • “洪水填充”多边形?其中多边形是指任何东西,从普通多边形一直到复杂的奇偶规则任意多边形填充(其中多边形可以由Bézier曲线路径定义)

  • “拾取点并填充洪水”类型的算法?有点像你在绘画程序中看到的旧的“油漆罐”泛光填充工具(好吧,至少你以前看到过,这对我来说已经很长时间了)(我想这里是MacPaint/Deluxe paint时代)。这些算法的范围很广,从碰到“边缘”时“停止”的普通2D像素平面(通常与泛光填充开始时的“颜色”不同),一直到高端绘画/照片处理程序(即PhotoShop)中可能看到的非常复杂的automagic边缘检测算法

  • 我假设你不是在找任何琐碎的案子因为。。。嗯,在你尝试破解这个之前,你可能还有一些其他的坚果需要破解

    因此,在#1的情况下,您可能应该从开始。MacOSX/iOS有一个极其复杂的2D图形API,主要基于PDF/PostScript渲染模型。CoreGraphics/Quartz将自动为您进行“洪水填充”,您可以在Bézier曲线级别进行引导

    在#2的情况下,您可能应该从开始。无论如何,你可能要在这个层次上与它互动。但是,OpenGL+可编程着色器可能是更好的选择,这取决于您希望“automagic”边缘检测的复杂程度。但根据我的经验,像这样直接使用渲染管道的人通常对处理像素数据所用的基本算法掌握得相当好,因此我怀疑这种技术可能不适合你


    在同一上下文中混合CoreGraphics和OpenGL是一种先进的技术,因此您可能需要选择CoreGraphics或OpenGL作为主要的渲染API。然而,CoreGraphics也有一些相当先进和时髦的API,用于完成相同类型的工作,但这远远超出了CoreGraphics API的基本使用范围(但您可以通过各种iOS图形文档找到所有信息,这些文档既广泛又有很好的文档记录).

    请任何人帮我做这件事。我真的在等待答复。谢谢你到目前为止做了什么?我想在iphone中使用Colorme应用程序。也就是说,我想用颜色填充图像。我想在不规则形状上填充颜色。。那么,我怎样才能做到这一点呢?@CRDave:那个算法不行。它要求图像具有平坦的颜色。。就像在彩色书中一样。如果我用相机点击一张图片并尝试。。该算法失败。感谢您的快速响应Dave。请给我任何洪水填充的示例应用程序。非常感谢您的考虑和努力…这里有一个包含各种语言实现的页面:我看到了您为洪水填充提供的链接。我想用目标c实现洪水填充。为此,我应该在哪里我会给我任何使用Objective c的洪水填充的示例应用程序。我希望你能在这方面帮助我。谢谢你,c算法对于移植到Objective c来说应该是非常简单的。如果你对此有特殊的问题,请在这里再次发布。唯一的区别是如何从屏幕上读取颜色。为此,这里的方法满足了您的要求:非常感谢您的快速响应。我想在iphone中实现洪水填充算法(目标c)。我不知道w