Отсечение изображения с помощью пользовательского UIBezierPath - PullRequest
1 голос
/ 09 января 2012

Мне было интересно, может ли кто-нибудь направить меня в правильном направлении с этой проблемой.

У меня есть пользовательский UIBezierPath с несколькими точками, которые возникли в результате прикосновений пользователя.

Я могу получить их для создания фигур в стандартном болотном UIView с помощью функции [myPath fill];.

В идеале я хотел бы использовать путь для создания маски отсечения для UIImage - возможно,как UiImageView?

Я попытался изменить свой UIView на UIImageView, а затем изменить функцию на [myPath addClip];, но по какой-то причине он не работает.

1 Ответ

1 голос
/ 09 января 2012

Вам нужно создать графический контекст, нарисовать изображение и нарисовать маску, используя kCGBlendModeDestinationIn.Как то так:

UIGraphicsBeginImageContextWithOptions(size, NO, 0.0); // size is a CGSize of the result you want
[image drawInRect:imageRect];  // image is the UIImage you want to clip, imageRect is the rect in the context where you want your image
[mask drawInRect:rect blendMode:kCGBlendModeDestinationIn alpha:1.0];  // mask is a UIImage containing the mask you drew, rect is the rect in the context where you want your mask - could match imageRect above
UIImage* uiImage = UIGraphicsGetImageFromCurrentImageContext();
...