使用TPicture时为什么PNG图像的透明度会丢失?

时间:2013-09-09 22:10:34

标签: delphi bitmap png delphi-xe2

我正在使用此代码将透明png转换为32 bpp bmp。

var
   Picture : TPicture;
   BMP : TBitmap;    
begin
  Picture := TPicture.Create;
  try
    Picture.LoadFromFile('Foo.png');
     BMP := TBitmap.Create;
     try
       BMP.PixelFormat:=pf32bit;
       BMP.Width := Picture.Width;
       BMP.Height := Picture.Height;
       BMP.Canvas.Draw(0, 0, Picture.Graphic);
       BMP.SaveToFile('Foo.bmp');
       finally
         BMP.Free;
       end;
     finally
       Picture.Free;
      end;
end;

图像转换为bmp但透明度丢失了,我缺少什么?

1 个答案:

答案 0 :(得分:4)

尝试使用Assign方法。这将保持透明度。

像这样。

 BMP := TBitmap.Create;
 try
   BMP.Assign(Picture.Graphic);
   BMP.SaveToFile('Foo.bmp');
 finally
     BMP.Free;
 end;