-1

我正在创建一个简单的绘图应用程序,其中我在后台有一个 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(); 
4

1 回答 1

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);  
  }
于 2012-08-03T10:12:49.563 回答