3
我的任務是:如何從位圖創建透明PNG圖像?
- 創建一個TBitmap對象。
- 用透明色填充(alpha = 0)。
- 將此位圖分配給TPngImage。
- 保存帶alpha透明度的PNG文件。
如何在Delphi XE中執行此操作?
var
Png: TPngImage;
X, Y: Integer;
Bitmap: TBitmap;
begin
Bitmap := TBitmap.Create();
Bitmap.PixelFormat := pf32bit;
Png := TPngImage.Create();
try
Bitmap.SetSize(100, 100);
// How to clear background in transparent color correctly?
// I tried to use this, but the image in PNG file has solid white background:
for Y := 0 to Bitmap.Height - 1 do
for X := 0 to Bitmap.Width - 1 do
Bitmap.Canvas.Pixels[X, Y]:= $00FFFFFF;
// Now drawing something on a Bitmap.Canvas...
Bitmap.Canvas.Pen.Color := clRed;
Bitmap.Canvas.Rectangle(20, 20, 60, 60);
// Is this correct?
Png.Assign(Bitmap);
Png.SaveToFile('image.png');
finally
Png.Free();
Bitmap.Free();
end;
end;
只是一個旁註,不要使用'TCanvas.Pixels',它非常緩慢和邪惡;-)使用'TBitmap.Scanline'代替。 – TLama
請參閱[這個答案](http://stackoverflow.com/a/6950006/576719)的問題[如何使用透明度保存png文件?](http://stackoverflow.com/q/6949094/576719)舉一個例子。 –
另一個旁註,你甚至需要一個位圖?你不想直接在PNG圖像畫布上渲染你需要的東西嗎? – TLama