我对 iPhone 开发非常陌生。我想在 iPhone 中使用 FloodFill 算法创建一个应用程序。我对 FloodFill 一无所知。请解释一下 FloodFill 算法的目的。如果您提供 FloodFill(iPhone) 的示例应用程序,意味着我真的非常高兴。因为我从早上开始就在探索 FloodFill,但是什么也没找到。
我的任务是,我想用颜色逐部分填充图像。这意味着,如果我选择一种颜色并单击图像的特定区域,则意味着它会使用所选颜色着色。
请帮我做到这一点。
编辑:我无法编写 iPhone 的洪水填充算法实现代码。
最佳答案
这是一种递归算法,这意味着它会调用自身来完成整个过程的较小部分。
洪水填充将从一个像素开始。然后它将检查四个相邻像素(上、下、左、右)。对于与我们开始的颜色相同的四个像素中的任何一个,它将调用从该像素开始的另一个洪水填充。
想象一张小图片,其中 .是一种颜色,X 是另一种颜色。这些数字仅供引用,因此 7,0 是右上角。 (忽略红/黑语法高亮!)
01234567
0........
1.XXXX...
2.X..X...
3.X...X..
4.XXX..X.
5...X..X.
6...XXX..
7........
现在假设您在 3,3 处开始洪水填充。它将把 3,3 更改为新颜色。 然后它会检查上、下、左、右。 对于向上 (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........
“向上”分支从 (3,2) 开始新的洪水填充。 从这里开始,向上是X,所以就停止了。右侧是 X,因此停止,向下是 O,因此停止,但左侧 (2,2) 是相同的(一个点),因此它从那里开始新的洪水填充。
同样,原始洪水填充的“右”分支从 (4,3) 开始。它可以使用的唯一分支是 down (4,4)。现在我们有这个:
01234567
0........
1.XXXX...
2.XOOX...
3.XOOOX..
4.XXXO.X.
5...X..X.
6...XXX..
7........
因此洪水填充从 (4,4) 继续,向右和向下分支。然后,这两个分支之一将分支到 (5,5)。到那时,将不再有可能的分支。
这就是我的午餐时间:)
关于iphone - iPhone 中的洪水填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4862707/