2

我正在尝试将 PNG 绘制到透明的 BitmapData 上。

我像这样创建我的 BitmapData(使用 ARGB 作为颜色):

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

并使用相同的 ARGB 值对其进行清理:

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

当我使用copyPixels()在清理后的 BitmapData 上绘制图形时,我得到以下结果:

在此处输入图像描述

如果我不使用 ARGB 作为 BitmapData 颜色,它可以正常工作:

在此处输入图像描述

但我必须指定一个实心填充颜色,这意味着我无法渲染位图背后的内容。

如何使我的 BitmapData 透明,但不会发生上述情况?

4

1 回答 1

6

文档中BitmapData::CopyPixels()

“mergeAlpha 属性控制在将透明图像复制到另一个透明图像时是否使用 alpha 通道。要使用 alpha 通道数据复制像素,请将 mergeAlpha 属性设置为 true。默认情况下,mergeAlpha 属性为 false。”

这一次,Adobe 文档实际上说出了真相。

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

...应该修复它(并且做到了)。出于性能原因,猜测它默认关闭,因为我真的想不出关闭它有用的地方。

于 2012-02-05T21:28:17.287 回答