2011-03-14 62 views
0

我正在使用下面的代码来绘制一个基于触摸移动,因为它是在MS Paint? 它工作正常。但当我尝试在触摸结束后再次画线时,上一行会被删除..请帮忙吗?CGcontext的最后内容没有保存?

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    mouseSwiped = NO; 
    UITouch *touch = [touches anyObject]; 

    if ([touch tapCount] == 2) 
    { 
     //drawImage.image = nil; 
     //alphavalue = 0.0; 
     //isErase = TRUE; 
     //return; 
    } 

    lastPoint = [touch locationInView:self.view]; 
} 

回答

1

UIGraphicsBeginImageContext将创建一个新的图像内容每次你进入touchesMoved例行程序的时间。您需要找到一种方法来保存线条的起点和终点,以便将其渲染到其他地方更持久的上下文,或者提出一些其他解决方案来保留上下文。

0

一)不保留这样的

B中的图形上下文),你想从你的drawRect:覆盖范围内绘制图像。或者,您可以保留您需要的数据,并使您需要在touchesMoved中绘制的矩形无效。然后使用你所隐藏的状态从drawRect:中抽取。

底线是你应该无效,然后绘制时请求。超出该范围的绘图会给您带来不可预知的绘制结果(裁剪的反应,意外的排序和其他行为),并强制程序绘制多次。

+0

我无法理解您的解决方案请致电 – 2011-03-14 05:30:03

0

尝试先使用CGBitmapContextCreate()创建一个CGContext,保存它,然后对所有绘图使用相同的上下文。

+0

任何教程? – 2011-03-14 10:08:37