如何在delphi中将图标转换为具有alpha透明度的png?

时间:2009-07-17 05:45:32

标签: delphi

下面的代码会从文件中提取图标并将其转换为png但没有Alpha透明度?

var
   IconIndex : word;
   icon:TIcon;
   png:TPngImage;
   bmp:TBitmap;
begin
  IconIndex := 0;
  icon := TIcon.Create;
  icon.Handle := ExtractAssociatedIcon(hInstance,pChar(Edit1.Text), IconIndex) ;
  bmp:= TBitmap.Create;
  bmp.LoadFromFile('blank.bmp');
  DrawIcon(bmp.Canvas.Handle, 0, 0, icon.Handle) ;
  png := TPngImage.Create();
  png.Assign(bmp);
  png.SaveToFile('icon.png');
end;

3 个答案:

答案 0 :(得分:11)

PngComponents包含一个单位PngFunctions.pas,你可以看看

procedure ConvertToPNG(Source: TGraphic; out Dest: TPngImage);

在那里你可以找到将TIcon转换为TPngImage的代码 - 或者只是使用该程序。

答案 1 :(得分:0)

我在谷歌搜索后发现了一些像PNG DelphiDelphi PNG and MNG libraries这样的库。

答案 2 :(得分:-1)

虽然TPngImage is no longer open source,如果我快速查看我在这里躺着的旧副本,TPngImage.Assign只会检查源是否是TPngImage,如果没有,则让'default'分配它是否正常工作对于TBitmap或TGraphic,这很可能会在画布上使用普通绘图来抛弃透明度。

这似乎要发布在Delphi QC