2012-02-05 213 views
2

我試圖將PNG繪製到透明的BitmapData上。如何在透明BitmapData上繪製透明圖形?

創建我的BitmapData所示(使用ARGB的顏色):

new BitmapData(width, height, true, 0x00000000); 

,並使用相同的ARGB值清潔:

bitmapData.fillRect(bitmapData.rect, 0x00000000); 

當我使用copyPixels()繪製圖形上清理過的BitmapData,我得到這個結果:

enter image description here

如果我不使用ARGB對於色彩的BitmapData,它工作正常:

enter image description here

但我必須指定一個實心填充顏色,這意味着我無法呈現什麼是位圖的後面。

如何讓我的BitmapData透明,但沒有發生上述情況?

+2

你試過mergeAlpha嗎?即 'copyPixels(myPNG,rect,point,null,null,true);' – JimmiTh 2012-02-05 21:11:52

+0

@TheKaneda哈,這工作 - 謝謝。 – Marty 2012-02-05 21:18:18

+0

那麼,對於Adobe產品來說,這是非常簡單直接的...增加了一點作爲答案。 – JimmiTh 2012-02-05 21:28:51

回答

6

documentation on BitmapData::CopyPixels()

「mergeAlpha屬性控制alpha通道是否被使用當透明圖像被複制到另一透明圖像要與α信道數據複製像素,請將mergeAlpha屬性爲true。默認情況下,mergeAlpha屬性爲false。「

一旦Adobe文檔實際上說出了真相。

copyPixels(myPNG, rect, point, null, null, true); 

...應該修復它(並做)。猜測它出於性能原因被默認關閉,因爲我無法真正想到將它關閉的地方。