我試圖覆蓋2個圖像。將底部圖像從圖像庫加載到Alpha設置爲1.0的UIImageView對象中。此圖像中的所有像素也具有1.0的alpha值。我在上下文中創建的第二個圖像。該圖像的alpha值因像素而異。在上下文中創建第二個圖像後,我將其繪製到第一個UIImageView頂部顯示的第二個UIImageView。這第二個UIImageView也有一個alpha設置爲1.0。這兩個UIImageView都有背景屬性設置爲清除。UIImage混合模式問題
我試圖在運行時使用滑塊更改第二個圖像中像素的單獨alpha值,但是,我無法獲得第二個圖像的RGB值以便與第一個圖像正確混合。我不想基於亮度,黑暗度等進行混合。似乎我想要kCGBlendModeCopy,但這似乎仍然基於明度或其他參數進行混合。
爲了幫助可視化問題:想象一下,我的底部UIImageView是一個人的照片。我的頂級UIImageView由2個堅實的分隔圓圈組成; 1個紅色和1個綠色。使用滑塊,如果我將紅色像素的Alpha值從0.0更改爲1.0,然後紅色圓圈應淡入爲純紅色,並且淡出完全平穩。
我可以通過將RGB數據數組值設置爲等於alpha值並將alpha值設置爲1.0來驗證我的alpha值是否正常工作。這顯示出一個黑色的圓圈逐漸消失在白色和背面。
下面是我用來創建第一張圖像的代碼。
//image <-- is the name of the second UIImageView that's passed to this method
//rgbaDataNew <-- is the name of my pixel data array for the second image
CGContextRef context;
CGImageRef imageRef;
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
context = CGBitmapContextCreate(rgbaDataNew, width, height, 8, 4 * width, colorSpace, kCGImageAlphaPremultipliedLast | kCGBitmapByteOrder32Big);
imageRef = CGBitmapContextCreateImage (context);
UIImage * topImage = [UIImage imageWithCGImage:imageRef];
CGContextSetBlendMode(context, kCGBlendModeCopy);
CGContextDrawImage(context, CGRectMake(0, 0, width, height), [topImage CGImage]);
image.image = [UIImage imageWithCGImage:CGBitmapContextCreateImage (context)];
CGColorSpaceRelease(colorSpace);
CGContextRelease(context);
CGImageRelease(imageRef);
難道你不能只將一個圖像視圖放在另一個圖像視圖上,並將t opmost圖像視圖的'opaque'屬性爲'NO'? – jrturton 2012-07-15 06:13:09
試過了,但沒有改變結果。感謝您的迴應! – 2012-07-15 06:19:52