【问题标题】:last content of CGcontext is not saved?CGcontext 的最后内容没有保存?
【发布时间】:2011-03-14 04:48:06
【问题描述】:

我正在使用以下代码绘制一条基于触摸移动的线条,就像在 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];
}

【问题讨论】:

    标签: iphone ipad ios4 cgcontext


    【解决方案1】:

    UIGraphicsBeginImageContext 将在您每次进入touchesMoved 例程时创建一个新的图像上下文。您将需要找到一种方法来保存线的起点和终点,以便可以将其呈现到其他地方的更永久的上下文中,或者提出一些保留上下文的其他解决方案。

    【讨论】:

      【解决方案2】:

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

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

      底线是您应该无效,然后在请求时绘制。超出该上下文进行绘图会给您带来不可预知的绘图结果(裁剪的矩形、意外的排序和其他行为),并迫使程序多次绘制。

      【讨论】:

      • 我无法理解您的解决方案
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        相关资源
        最近更新 更多