2011-08-04 52 views
1

我有一个问题在AS3翻转PNG。我遇到的问题是,当我翻转图像时,它不保持其透明度。翻转与矩阵的PNG

preApply = new BitmapData (Canvas.Bmp.width, Canvas.Bmp.height,true); 
preApply.draw(Canvas.Bmp,myMatrix, null, null, null, true); 

有什么建议吗?翻转工作正是它给了它一个白色背景。我能够在相同的图像上运行过滤器,并且似乎没有给它白色背景。

更新:我刚刚发现了一些奇怪的事情,如果我设置了BitmapData的颜色,它会保持透明度。

preApply = new BitmapData (Canvas.Bmp.width, Canvas.Bmp.height,true,0x0000FFFF); 

现在我的问题类型的变化任何想法,为什么这可能工作?

+0

如果您测试其中一个像素为透明(使用获取像素),您会得到什么结果?会很好奇,看看像素值在转换前后是否具有透明度。 –

回答

2

这很简单,bitmapData的第四个参数的默认值就是您希望它初始填充的内容。所以当你没有指定它是透明的(在这种情况下0x000000FF或明显是0x0000FFFF也可以),那么它默认为白色,并且当你将已经透明的图像绘制到这个新的不透明的白色填充图像时,alpha通道是被白色覆盖。这是因为绘制命令不会覆盖现有bitmapData中带alpha通道信息的任何内容,而只会覆盖RGB值。