2012-08-03 97 views
-1

我創造,我有背景&的UIImageView在前臺一個UIView一個簡單的繪圖應用程序。我在UIView中做了一些繪圖工作,並且在UIImageView中設置了一個圖像。我想在UIImageView中添加透明效果以顯示圖像後面的行。我知道我可以通過減少alpha來做到這一點,但我不想改變圖像的alpha值。的iOS應用程序繪製問題

我想CGContextSetBlendMode做到這一點,但我不知道如何做到這一點。請幫我解決這個問題。

謝謝!

IMAGEhttp://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

對於您需要利用UIView的形象,U可以發佈我們的代碼,這樣我可以建議你什麼樣的變化,你需要做 – DivineDesert 2012-08-03 09:44:26

+0

我知道我能做到這一點,但問題是,每當我這樣做與我設置blendMode中的行(CGPath)相互重疊的都是這個:http://i.stack.imgur.com/UroVd.png – Smith 2012-08-03 09:52:15

+1

@史密斯請編輯您的問題,以包括您放入評論的代碼並刪除該評論。這是非常難以閱讀。 – Stunner 2012-08-03 09:58:39

回答

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); 
    } 
+0

反正有沒有把我的UIImage轉換成CGBitmapContext?所以我可以在我的圖像中應用blendmode? – Smith 2012-08-03 10:19:17