如何删除已删除的UIImage

嗨,伙计们,我想我的PanGesture我使用下面的代码中的图像擦除代码:

UIImage * image = [UIImage imageNamed:@"326d4fb72362a2e44659141cadfc4977.jpg"]; holderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 235)]; imgForeground = [[UIImageView alloc] initWithFrame:[holderView frame]]; [imgForeground setImage:image]; [holderView addSubview:imgForeground]; UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(move:)]; [panRecognizer setMinimumNumberOfTouches:1]; [panRecognizer setMaximumNumberOfTouches:1]; [panRecognizer setDelegate:self]; [holderView addGestureRecognizer:panRecognizer]; [self.view addSubview:holderView]; 

然后我在这里处理

  -(void)move:(id)sender { CGPoint currentPoint; if([(UIPanGestureRecognizer*)sender state] == UIGestureRecognizerStateBegan){ lastPoint = [sender locationInView:imgForeground]; lastPoint.y -=20; } else{ currentPoint = [sender locationInView:imgForeground];; currentPoint.y -=20; } UIGraphicsBeginImageContext(imgForeground.frame.size); [imgForeground.image drawInRect:CGRectMake(imgForeground.frame.origin.x, imgForeground.frame.origin.y, imgForeground.frame.size.width, imgForeground.frame.size.height)]; CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineCap(context,kCGLineCapRound); //kCGImageAlphaPremultipliedLast); CGContextSetLineWidth(context, 10); CGContextSetRGBStrokeColor(context, 0, 0, 0, 1.0); CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear); CGContextBeginPath(context); CGContextMoveToPoint(context, lastPoint.x, lastPoint.y); CGContextAddLineToPoint(context, lastPoint.x, lastPoint.y); CGContextStrokePath(context); imgForeground.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); } 

我的问题是如何删除相同的图像,请帮助

我在我的应用程序中有相同的问题,经过漫长的search,我发现这个问题的简单解决scheme。

我只是使用UIViewController触摸方法

以下是我的做法,

码:-

  #pragma mark touches stuff... - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; lastTouch = [touch locationInView:self.editedImageView]; } - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { UITouch *touch = [touches anyObject]; currentTouch = [touch locationInView:self.editedImageView]; CGFloat brushSize; if (isEraser) { brushSize=eraser; } else { brushSize=mark; } CGColorRef strokeColor = [UIColor whiteColor].CGColor; UIGraphicsBeginImageContext(self.editedImageView.frame.size); CGContextRef context = UIGraphicsGetCurrentContext(); [self.editedImageView.image drawInRect:CGRectMake(0, 0, self.editedImageView.frame.size.width, self.editedImageView.frame.size.height)]; CGContextSetLineCap(context, kCGLineCapRound); CGContextSetLineWidth(context, brushSize); if (isEraser) { CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor colorWithPatternImage:self.im].CGColor); } else { CGContextSetStrokeColorWithColor(context, strokeColor); CGContextSetBlendMode(context, kCGBlendModeClear); } CGContextBeginPath(context); CGContextMoveToPoint(context, lastTouch.x, lastTouch.y); CGContextAddLineToPoint(context, currentTouch.x, currentTouch.y); CGContextStrokePath(context); self.editedImageView.image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); lastTouch = [touch locationInView:self.editedImageView]; } - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { } 

投入:

 self.editedImageView.image = "Your Custom image"; self.im = "Your Custom image"; 

你的问题的简单解决scheme将是:

 CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), [UIColor colorWithPatternImage:self.im].CGColor); 

注意:

这不会再次把它画出来

更新: –

  self.im = "Your Custom image"; 

这将是这样的….

 -(void)eraserConfigure { UIImageView *resizeImage=[[[UIImageView alloc]initWithImage:editedImage]autorelease]; /*UIImage */self.im=[UIImage imageFromView:resizeImage scaledToSize:CGSizeMake(self.editedImageView.frame.size.width, self.editedImageView.frame.size.height)]; } 

在每次绘图操作后保存一个临时图像
您应该保存临时文件并限制撤消操作的次数。