使用CoreGraphics(在我的drawRect方法中),我試圖將混合模式應用於圖像(透明png),然後調整結果的alpha值。我假設這需要分兩步完成,但我可能是錯的。這裏是我到目前爲止(工作正常):iOS:使用CoreGraphics進行2級圖像處理
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
//SET COLOR - EDIT... added a more practical color example
CGContextSetRGBFillColor(context, 0.0, 1.0, 0.0, 1);
//flips drawing context (apparently this is necessary)
CGContextTranslateCTM(context, 0.0, self.bounds.size.height);
CGContextScaleCTM(context, 1.0, -1.0);//flip context
//DRAW PIN IMAGE
UIImage *pin = [UIImage imageNamed:@"pin"];
CGRect pinrect = CGRectMake(12, 17, 25, 25);
CGContextDrawImage(context, pinrect, pin.CGImage);//draws image in context
//Apply blend mode
CGContextSetBlendMode(context, kCGBlendModeColor);
CGContextClipToMask(context, pinrect, pin.CGImage); // restricts drawing to within alpha channel
//fills context with mask, applying blend mode
CGContextFillRect(context, pinrect);
CGContextRestoreGState(context);
// -- Do something here to make result 50% transparent ?? --
我假設我需要繪製這一切變成某種單獨的上下文的某個地方,叫CGContextSetAlpha(...)
,然後重新繪製回我原始上下文,但我不知道如何。在我的最終CGContextFillRect之前設置alpha值只會改變混合模式的應用量,而不是整個圖像的alpha值。
編輯:截圖貼
在此先感謝。
如果您在繪製圖像之前調用CGContextSetAlpha,該怎麼辦?繪製圖像之後但在應用混合之前,您可能還想將其重置爲1。 – ughoavgfhw 2011-05-05 22:09:12
謝謝,但不幸的是,這會淡化圖像以及混合模式應用的數量。即。這將是50%透明,50%轉移到綠色。我希望它100%轉向綠色,然後是50%透明。 – Chazbot 2011-05-07 17:19:02
我仍然沒有得到結果應該是什麼樣子,你能提供一些圖片嗎? – 2011-05-07 17:30:00