我正在使用GR32繪製多個半透明PNG圖像。 到目前爲止,我一直在使用下面的方法:Delphi,GR32 + PngObject:轉換爲Bitmap32不能正常工作
png:= TPNGObject.Create;
png.LoadFromFile(...);
PaintBox321.Buffer.Canvas.Draw(120, 20, png);
但我想改用提出了GR32網站的方法(http://graphics32.org/wiki/FAQ/ImageFormatRelated):
tmp:= TBitmap32.Create;
LoadPNGintoBitmap32(tmp, ..., foo);
tmp.DrawMode:= dmBlend;
PaintBox321.Buffer.Draw(Rect(20, 20, 20+ tmp.Width, 20+tmp.Height),
tmp.ClipRect, tmp);
雖然第一種方法工作完全正常,第二個 - 應該給出相同的結果 - 導致Alpha通道非常奇怪的問題,請參閱圖像(它也顯示與Paint.NET中「排列」的相同圖像的比較 - 背景和圖標均在編輯器的圖層上打開)。該圖像描述了Bitmap32的加載或繪製不當。有小費嗎?
- 加11月22日
我發現它是不是畫,它是關於加載PNG到BMP32。從BMP32保存到PNG會生成不正確的「白化」(左邊的那個)PNG圖像。
我認爲這是由於「不透明度」,還你設置「tmp.DrawMode:= dmBlend;」我沒有使用GR32,但我猜想,所不同的是,由於不透明性。 – ComputerSaysNo
@Dinin Duminica,它不是。他們網站上的例子顯示,如果加載的PNG圖像中有任何透明度,模式應該是dmBlend。因爲我知道我所有的圖片都是透明的,所以我不必檢查。 – migajek