我正在使用以下代码根据触摸移动绘制一条线,因为它在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];
}
答案 0 :(得分:1)
UIGraphicsBeginImageContext
例程时, touchesMoved
都会创建一个新的图像上下文。您需要找到一种方法来保存线的起点和终点,以便可以在其他地方渲染到更永久的上下文,或者提出一些保留上下文的其他解决方案。
答案 1 :(得分:0)
a)不要像那样保持图形上下文
b)您想要在覆盖drawRect:
范围内绘制图像。或者,您可以保留所需的数据,并使您需要在touchesMoved中绘制的矩形无效。然后使用你隐藏的状态从drawRect:
中抽取。
底线是您应该无效,然后在请求时绘制。超出该上下文的绘制将为您留下不可预测的绘图结果(裁剪的rects,意外的排序和其他行为),以及强制程序多次绘制。
答案 2 :(得分:0)
首先尝试使用CGBitmapContextCreate()创建CGContext,保存它,然后对所有绘图使用相同的上下文。