iOS绘图应用程序问题

时间:2012-08-03 09:42:20

标签: iphone ios xcode ipad ipod

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

1 个答案:

答案 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);  
  }