iphone - iPad 中的洪水填充速度太慢

标签 iphone objective-c ipad flood-fill

我在 iPad 上为我的一款填色应用程序使用 flood Filling。

该应用程序基本上是在图像的黑线内填充颜色,我可以毫无问题地执行此操作,但它太慢了。

我首先使用递归洪水填充,它的性能最差(由于 Stack Overflow),然后我能够使用 Stack 和以下代码将其转换为迭代,但这太慢了

-(void)floodFillAtPoint:(CGPoint)atPoint
 {
Stack *stack = [[Stack alloc] init];

[stack push:[StackPoint pointWithPoint:atPoint]];
StackPoint *currentPoint = nil;
int counter = 0;
while ((currentPoint = [stack pop])) 
{
    CGPoint aPoint = currentPoint.point;//CGPointMake(pointPixel.x, pointPixel.y);
    [self setColorAtPoint:aPoint];
    CGPoint bPoint = aPoint;
    bPoint.x+=1;
    if([self checkForValidRegionAtPoint:bPoint])
        [stack push:[StackPoint pointWithPoint:bPoint]];
    bPoint = aPoint;
    bPoint.x-=1;
    if([self checkForValidRegionAtPoint:bPoint])
        [stack push:[StackPoint pointWithPoint:bPoint]];
    bPoint = aPoint;
    bPoint.y+=1;
    if([self checkForValidRegionAtPoint:bPoint])
        [stack push:[StackPoint pointWithPoint:bPoint]];
    bPoint = aPoint;
    bPoint.y-=1;
    if([self checkForValidRegionAtPoint:bPoint])
        [stack push:[StackPoint pointWithPoint:bPoint]];        
    counter++;
}
[stack release];

}

有人能推荐一种在 iPad 设备上效果最好的替代方法吗?

最佳答案

使用 Objective-C 对象来表示每个像素会非常慢并且几乎没有什么好处。

使用不同的数据结构来表示您的位图,例如各种 CG* 位图封装机制之一。然后直接旋转位图中的位。它会越来越快。

关于iphone - iPad 中的洪水填充速度太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5931552/

相关文章:

iphone - Facebook 登录后应用程序崩溃

iphone - 无法使用 UIPanGestureRecognizer 移动 UIImageView

ios - 链接器命令因 Realm 而失败?

javascript - 检测移动到 Mobile Safari 中的新选项卡

iphone - 如何正确保留对 ActionSheet 委托(delegate)使用的对象的引用?

iphone - 如何从 controller.m 更新 Storyboard uiviewcontroller 的标签/文本字段?

c++ - Opencv:在轮廓图像中填充颜色

ios - 当@objc 和@nonobjc 在swift 中写在方法和变量之前?

javascript - 防止 UIWebView 重新定位输入字段

javascript - HTML5/CSS3 动画