2011-08-04 5 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

透明であると思われるピクセルの1つをテストすると(ピクセルを使用して)何が得られますか?ピクセル値に変換の前後で透明性があるかどうか不思議ですか? –

答えて

2

これは簡単です。ビットマップデータの4番目のパラメータのデフォルト値は、最初に埋めたい値です。したがって、透明(これは0x000000FFまたは0x0000FFFF)が指定されていない場合は、デフォルトで白になります。すでに透明なイメージをこの新しい不透明で白い塗りつぶしのイメージに描画すると、アルファチャンネルは次のようになります。白で上書きされます。これは、drawコマンドが既存のbitmapDataにあるものをアルファチャンネル情報で上書きしないためです(RGB値のみ)。