我正在创建一个简单的绘图应用程序,其中我在后台有一个UIView&前景中的UIImageView。我在UIView中做了一些绘图工作,我在UIImageView中设置了一个图像。我想在UIImageView中添加透明效果,以显示图像背后的线条。我知道我可以通过减少alpha来做到这一点,但我不想改变图像的alpha。
我想用CGContextSetBlendMode
来做,但我不知道该怎么做。请帮我解决这个问题。
谢谢!
图片 http://www.freeimagehosting.net/q3237
UIImage *img = [UIImage imageNamed:@"Image.png"];
UIGraphicsBeginImageContext(self.view.frame.size);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(ctx, kCGBlendModeMultiply);
[img drawInRect:CGRectMake(0, 0, 768, 1004) blendMode:kCGBlendModeDarken alpha:1]; [imageView.image drawInRect:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
CGContextSetBlendMode(ctx, kCGBlendModeDarken);
imageView.image = UIGraphicsGetImageFromCurrentImageContext();
答案 0 :(得分:1)
无需保持imageview像这样做.. 由于您使用两种不同的上下文,因此无法在它们之间使用混合模式。为此,您需要在绘图视图上绘制其他内容,然后绘制图像..
- (void)drawRect:(CGRect)rect {
// do ur drawing stuff first
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(context, 0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGContextDrawImage(context, self.bounds, self.image.CGImage);
CGContextSetBlendMode(context, kCGBlendModeSaturation);
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);
CGContextFillRect(context, rect);
}