使用自定义UIBezierPath剪切图像

时间:2012-01-09 03:30:28

标签: iphone cocoa-touch image uikit core-graphics

我想知道是否有人可以指出我正确的方向解决这个问题。

我有一个用户创建的UIBezierPath,其中有几个点是由用户触摸产生的。

我可以使用[myPath fill];函数在沼泽标准的UIView上创建形状。

我理想的做法是使用路径为UIImage创建剪贴蒙版 - 可能是UiImageView

我尝试将我的UIView更改为UIImageView,然后将该功能更改为[myPath addClip];但由于某种原因它无效。

1 个答案:

答案 0 :(得分:1)

您需要使用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();