iphone - iPhone 中的洪水填充

标签 iphone colors flood-fill

我对 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/

相关文章:

iphone - 解谜器 - TreeNode 帮助

android - BottomNavigationView 图标在被选中时不会改变颜色

language-agnostic - 8位颜色可以通过平均混合吗?

c# - 使用 floodfill 算法计算 0 的个数

java - 计算房间数量的洪水填充算法

java - 使用洪水填充算法创建数组

iphone - 不想将内容集中在 UITableViewCell

iphone - "' ViewController ' may not respond to ..."当我*已*在@interface 中声明该方法时发出警告

iphone - Core Data 将父类(super class)实例转换为子类实例?

ios - 如何在 UITableView 的部分标题中设置字体颜色?