问题描述
我有一个包含 Image 的 Imageview .还有一个包含兔子形状的面具形状.我有一个代码给出以下结果.
- (UIImage*)mynewmaskImage:(UIImage *)image withMask:(UIImage *)maskImage { CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); CGImageRef maskImageRef = [maskImage CGImage]; // create a bitmap graphics context the size of the image CGContextRef mainViewContentContext = CGBitmapContextCreate (NULL,320, 380, 8, 0, colorSpace,(CGBitmapInfo) kCGImageAlphaPremultipliedLast); CGColorSpaceRelease(colorSpace); if (mainViewContentContext==NULL) return NULL; CGFloat ratio = 0; ratio = 320/ image.size.width; if(ratio * image.size.height < 380) { ratio = 380/ image.size.height; } CGRect rect1 = {{0, 0}, {320,380}}; CGRect rect2 = {{-((image.size.width*ratio)-320)/2 , -((image.size.height*ratio)-380)/2}, {image.size.width*ratio, image.size.height*ratio}}; // CGContextDrawImage(mainViewContentContext, rect2, image.CGImage); CGContextClipToMask(mainViewContentContext, rect1, maskImageRef); CGContextDrawImage(mainViewContentContext, rect2, image.CGImage); CGImageRef newImage = CGBitmapContextCreateImage(mainViewContentContext); CGContextRelease(mainViewContentContext); UIImage *theImage = [UIImage imageWithCGImage:newImage]; CGImageRelease(newImage); // return the image return theImage;}
上面的代码给出了这个结果.
但我想要以下结果(如反向屏蔽).
这怎么可能.请帮助我.谢谢.
推荐答案
你应该看看 blendMode.试试这样:
[rabbitImage drawInRect:rect blendMode:kCGBlendModeDestinationOut alpha:1.0];
相关问答
相关标签/搜索