0

我正在做一个“手指绘图应用程序”。我正在使用 Apple 的示例 [此处][1]。

但我想添加一个撤消选项。为了做到这一点,每次应用程序处理触摸事件的结束时,我都会将 EAGLContext 内容保存到图像中。

当我想绘制以以下方法保存的最后一张图像时,问题就来了:

-(void)undoButtonClicked {
if([savedImagesArray count]>0){
            UIImage *image = [savedImages lastObject];
            [savedImagesArray removeLastObject];
            [image drawInRect:self.frame];
}

}

但是没有绘制图像,并且有一个控制台输出显示:

 <Error>: CGContextRestoreGState: invalid context 0x0

我相信上下文有问题,但我似乎无法弄清楚。

谢谢

4

1 回答 1

0

在您调用它时,没有当前上下文。在调用之前会生成一个新的上下文drawRect:,并在绘图周期结束时处理掉。drawInRect:没有上下文时不能调用。

视图不应跟踪旧图像。那是一个控制器功能。单击撤消时,控制器应将正确的图像传递给视图,然后视图应在下次drawRect:调用时重新绘制自身。

于 2012-05-31T14:47:04.840 回答