複数の半透明のPNG画像を描画するのにGR32を使用しています。 、Delphi、GR32 + PngObject:Bitmap32への変換が期待通りに機能しない
tmp:= TBitmap32.Create;
LoadPNGintoBitmap32(tmp, ..., foo);
tmp.DrawMode:= dmBlend;
PaintBox321.Buffer.Draw(Rect(20, 20, 20+ tmp.Width, 20+tmp.Height),
tmp.ClipRect, tmp);
第1の方法は完全に正常に動作している間:
png:= TPNGObject.Create;
png.LoadFromFile(...);
PaintBox321.Buffer.Canvas.Draw(120, 20, png);
しかし、私はGR32のウェブサイト上で提案した方法に切り替えることを望んでいた(http://graphics32.org/wiki/FAQ/ImageFormatRelated): は、これまでのところ私は、以下の方法を使用してきました同じ結果を与えるべきである - は、アルファチャンネルで非常に奇妙な問題を引き起こします。画像を参照してください。(Paint.NETで同じ画像との比較も表示されます - 背景とアイコンの両方がエディタのレイヤーで開かれています)。イメージは、Bitmap32が正しく読み込まれていないことを示しています。任意のヒント?
は - 私はそれが描画に関するものではありません、それはBMP32にPNGをロードすることだということがわかってきました11月22日
を追加しました。 BMP32からPNGに戻って保存すると、間違った「ホワイトニングされた」(左側にある)PNG画像が生成されます。
私はまた、あなたが「= dmBlend tmp.DrawMode」に設定しました、それは「不透明度」によるものだということを前提としています。 – ComputerSaysNo
@Dorin Duminica、そうではありません。彼らのウェブサイトの例では、ロードされたPNG画像の透過性があればモードがdmBlendでなければならないことが示されています。すべての画像が透明であることを知っているので、私は小切手をする必要はありません。 – migajek