2011-12-04 142 views
1

我有幾個png,我將它們彼此重疊以在beginGraphicsContextWithOptions中形成單個圖像....但是,我想用透明度繪製一些這些圖像。我該怎麼做?用透明度繪製圖像

+0

你想,當你將它們結合起來,還是你剛纔的意思是使用透明的圖像已經有一個alpha應用到圖像? – Ian

+0

圖像沒有透明度。當我繪製圖像時,我想選擇性地將透明度應用於某些圖像。 – RunLoop

+0

我會做的是建立一個目標緩衝區,將每個圖像展開到它自己的緩衝區中,一次一個像素地循環顯示圖像數據,將像素寫入目標緩衝區(根據你想要的alpha進行混合並且已經有了什麼),然後創建一個新的上下文,並使用目標緩衝區來繪製一個新的CGImage,用它創建一個新的UIImage,並且應該這樣做。我現在超級累,但星期一我會在辦公室,我有一些可以幫助你的代碼。這應該至少讓你知道你可能從哪裏開始。祝你好運! – Ian

回答

0

這裏是你將如何覆蓋與transparancy圖片:

NSString* file1 = "your images file path"; 

NSRect largerect = NSRectMake(10,10,300,300); 

NSString* file2 = "your images file path"; 

NSString* file3 = "your images file path"; 

NSString* file4 = "your images file path"; 

NSImage* img1 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img2 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img3 = [[NSImage alloc] initWithContentsOfFile:file1]; 

NSImage* img4 = [[NSImage alloc] initWithContentsOfFile:file1]; 

//the fraction parameter is just how transparent you want it so 1.0 is opaque and 0.0  you will not see the image 

[image1 drawInRect: largeRect 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.8]; 

[image2 drawInRect: largeRect 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.6]; 

[image1 drawInRect: smallRect1 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.40]; 

[image2 drawInRect: smallRect2 
     fromRect: NSZeroRect 
    operation: NSCompositeSourceOver 
     fraction: 0.40]; 
+0

對不起,這是一個iOS問題,但你的答案確實讓我再次檢查文檔,UIImage現在有一個混合模式的方法與一個alpha組件 – RunLoop

+0

哦,我很抱歉! –