如何在UIImageView上删除绘制的CGPoint

时间:2015-05-25 13:19:05

标签: ios objective-c uiimageview cgpoint drawinrect

我有一个UIImageView,我在它上面画了点数。 我将CGpoint存储在容量为100的NSArray中。 每当我收到一个新的CGpoint我想要从数组中删除最后一个对象时,将其从数组中删除,然后绘制新的CGpoint并将其添加到数组中。

那么如何删除CGpoint?我的CGpoint上只有UIImageView

我的代码:

- (void) drawLine:(CGPoint)pt onCanvas:(UIImageView *)canvas color:(UIColor *)color
{

UIGraphicsBeginImageContext(canvas.frame.size);
[canvas.image drawInRect:CGRectMake(0, 0, canvas.frame.size.width, canvas.frame.size.height)];
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineCap(ctx, kCGLineCapButt);
CGContextSetLineWidth(ctx,10.0);
CGContextSetRGBStrokeColor(ctx, 1.0, 0.0, 0.0, 1.0);
CGContextBeginPath(ctx);
CGContextAddEllipseInRect (ctx,CGRectMake(pt.x-2.0, pt.y-2.0, 4, 4));
CGContextSetFillColorWithColor(ctx,color.CGColor);
CGContextFillPath(ctx);

CGContextStrokePath(ctx);
canvas.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}

1 个答案:

答案 0 :(得分:0)

您无法从图像中删除点。这是一个图像 - 想象它就像你拍摄的照片,然后你试图从中删除背景。这是不可能的。

你能做的最好的事情就是不要使用双缓冲区 - 只需保留数组中的点并在需要时将它们全部绘制。然后你不必删除任何东西。这可能会影响性能,但100分应该还不错。