tags:

views:

664

answers:

3

The code below will extract icon from file and convert it to png but without alpha transparency ?

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;
A: 

I found some libraries like pngdelphi and Delphi PNG and MNG libraries after Googling.

eed3si9n
The code above is already making use if TPngImage.
Stijn Sanders
A: 

Although TPngImage is no longer open source, if I take a quick look in an old copy I have lying around here, TPngImage.Assign only checks if the source is a TPngImage, and if not lets the 'default' assign do it's work, and for TBitmap or TGraphic, this will most probably use a plain draw on the canvas which throws away the transparency.

This looks like something to post on Delphi QC

Stijn Sanders
+5  A: 

The PngComponents contain a unit PngFunctions.pas, where you can have a look at

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

There you can find the code to convert a TIcon into a TPngImage - or just use that procedure.

Uwe Raabe
Amazing component! Danke
isa