CGcontext的最后一个内容没有保存?

时间:2011-03-14 04:48:07

标签: iphone ipad ios4 cgcontext

我正在使用以下代码根据触摸移动绘制一条线,因为它在MS Paint中? 它工作正常。但是当我尝试在触摸结束后再次绘制一条线时,前一行被删除了......有什么帮助吗?

 - (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];
}

3 个答案:

答案 0 :(得分:1)

每次进入UIGraphicsBeginImageContext例程时,

touchesMoved都会创建一个新的图像上下文。您需要找到一种方法来保存线的起点和终点,以便可以在其他地方渲染到更永久的上下文,或者提出一些保留上下文的其他解决方案。

答案 1 :(得分:0)

a)不要像那样保持图形上下文

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

底线是您应该无效,然后在请求时绘制。超出该上下文的绘制将为您留下不可预测的绘图结果(裁剪的rects,意外的排序和其他行为),以及强制程序多次绘制。

答案 2 :(得分:0)

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