У меня есть представление с UIImageView и изображением, установленным для него. Я хочу стереть изображение как что-то похожее на фотошоп с ластиком. Как мне это достичь? Кроме того, как я могу удалить стирание?Как удалить часть изображения UIImageView на iOS?
1
A
ответ
7
Если вы знаете, в какой области вы хотите удалить, вы можете создать новое изображение того же размера, установить маску на полное изображение за вычетом области, которую хотите удалить, нарисовать полное изображение в новом изображении и используйте это как новое изображение. Чтобы отменить, просто используйте предыдущее изображение.
Редактировать
Пример кода. Скажем, область, которую вы хотите удалить из поля зрения изображения imgView
задается с помощью erasePath
:
- (void) clipImage
{
UIImage *img = imgView.image;
CGSize s = img.size;
UIGraphicsBeginImageContext(s);
CGContextRef g = UIGraphicsGetCurrentContext();
CGContextAddPath(g,erasePath);
CGContextAddRect(g,CGRectMake(0,0,s.width,s.height));
CGContextEOClip(g);
[img drawAtPoint:CGPointZero];
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
}
1
UIGraphicsBeginImageContext(imgBlankView.frame.size);
[imgBlankView.image drawInRect:CGRectMake(0, 0, imgBlankView.frame.size.width, imgBlankView.frame.size.height)];
CGContextSetLineCap(UIGraphicsGetCurrentContext(), kCGLineCapRound);
CGContextSetLineWidth(UIGraphicsGetCurrentContext(),lineWidth);
CGContextSetBlendMode(UIGraphicsGetCurrentContext(), kCGBlendModeClear);
CGContextSetRGBStrokeColor(UIGraphicsGetCurrentContext(), red, green, blue, 1.0);
CGContextBeginPath(UIGraphicsGetCurrentContext());
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), YES);
CGContextMoveToPoint(UIGraphicsGetCurrentContext(), lastPoint1.x, lastPoint1.y);
CGContextAddLineToPoint(UIGraphicsGetCurrentContext(), currentPoint.x, currentPoint.y);
CGContextStrokePath(UIGraphicsGetCurrentContext());
imgBlankView.image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
вы можете опубликовать исходный образец кода для этого –
Thanx для образца кода, но в CGContextAddPath (г, erasePath); Как получить Erase путь? Пожалуйста, помогите мне. – Dhawal
Привет @ RahulVyas, @ Dhaval, @ Ed Marty вы можете рассказать мне, как вы получаете ErasePath, если у вас есть .. –