如何检测iOS中的封闭区域并填充其中的颜色?

时间:2013-05-06 04:26:30

标签: ios drawing

我需要像Windows中的Paint应用程序一样创建一个应用程序。请通过此链接查看视频

https://dl.dropboxusercontent.com/u/56721867/Screen%20Recording.mov

这就是我需要我的应用程序工作的方式。 我可以使用 UIBezierPath CGContext 类绘制线条和填充颜色,但是如何通过点击内部的颜色来填充封闭区域内的颜色,如视频中所示。请让我知道这种方法以及iOS中的哪个类可以实现这一目标。 谢谢!

3 个答案:

答案 0 :(得分:2)

此工具称为Flood Fill:

您可以从以下网站找到有关洪水填充的信息:
Flood fill
Lode's Computer Graphics Tutorial Flood Fill

如果您想要访问:UIImageScanlineFloodfill

的Objective-C示例

答案 1 :(得分:1)

我们有一个UIBezierPath属性containsPoint:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

中添加以下代码
if ([aPath containsPoint:touchloc1]) {
//then set a flag value.
            }

- (void)drawRect:(CGRect)rect方法中添加以下代码

if (flag){
   [[UIColor redColor] setFill];
    [yourPath fill];
}
else{
//Whatever code requires for your drawing.
}

希望它有效。

答案 2 :(得分:0)

正如CRDAve所说,这个链接给了我很多帮助。请访问https://github.com/Chintan-Dave/UIImageScanlineFloodfill

并使用以下代码 - (void)touchesBegan:(NSSet *)触及withEvent:(UIEvent *)事件

if (Fill_clicked==1) {

    UIImage *image1 = [paintingView.image floodFillFromPoint:lastPoint withColor:newcolor andTolerance:tolorance];
    paintingView.image=image1;
}

lastpoint来自上面的方法。我设置为10。