Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Icon Extract zu PNG (https://www.delphipraxis.net/136660-icon-extract-zu-png.html)

schwa226 5. Jul 2009 13:33


Icon Extract zu PNG
 
Hi,

ich weis es gibt sicher schon viele Themen dazu, aber ich bekomme es trotzdem einfach nicht auf die Reihe.

Ich lade mir mit diesem Code:
Delphi-Quellcode:
            Filter:=0;
            MyIcon:=TIcon.Create;
            MyIcon.Transparent := True;
            MyIcon.Handle:=ExtractAssociatedIcon(hInstance, PChar('c:\windows\notepad.exe'), Filter);
            Image1.canvas.draw(0,0,MyIcon);
            ButtonPanel.Buttons.Items[i].Picture.Assign(Image1.Picture);
das Icon in MyIcon.

Wie bekomme ich das nun zu PNG, damit die TRansparents nicht verloren geht? Der TMS-Button wo ich es nutzen will kann PNG.
Jedoch habe ich immer Ränder herum (Transparents verloren) wenn ich MyIcon in ein TImage lade und dieses dann per Picture.Assign auf den Button lege.

Wenn ich direkt ein PNG lade passt es mit der Transparent.

Arbeite mit RAD 2009!!

Danke!

geskill 6. Jul 2009 21:42

Re: Icon Extract zu PNG
 
Hi,
ich hoffe das ist was du suchst:

Delphi-Quellcode:
function IconFromFile(const Filename: String; IconNr: Word): HICON;
var
  buffer: array[0..2*MAX_PATH]of Char;
begin
  StrPCopy(buffer, Filename);
  Result := ExtractAssociatedIcon(HInstance, buffer, IconNr);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Image1.Picture.Icon.Handle := IconFromFile('C:\WINDOWS\NOTEPAD.EXE',0);
end;

schwa226 7. Jul 2009 06:04

Re: Icon Extract zu PNG
 
Danke, aber dann sieht das Icon so aus:

http://www.bilder-space.de/thumb/07....N410fJHEWC.JPG

Mit der funktion:
Delphi-Quellcode:
function GetIconBitmap(MyIcon : TIcon): TBitmap;
var ABitmap: TBitmap;
begin
  ABitmap := TBitmap.Create;
  ABitmap.width := 32;
  ABitmap.height := 32;
  ABitmap.PixelFormat := pf24bit; // um auch ggf. alle Farben richtig zu sehen

  // jeweiliger Ausgangspunkt: Ein Bitmap das du mit der clBtnFace-Color füllst
  ABitmap.Canvas.Brush.Color := clBtnFace;
  ABitmap.Canvas.FillRect(ABitmap.Canvas.ClipRect);
  // anschließend: Draufmalen der Icon
  DrawIconEx(ABitmap.Canvas.Handle,0,0,MyIcon.Handle,ABitmap.Width,ABitmap.Height,0,0,DI_NORMAL);
  // zum Schluss: Verknüpfen des Bitmaps mit der PopUp-Menuezeile
  Result := ABitmap;
end;
sieht es ganz gut aus:
http://www.bilder-space.de/thumb/07....29UHm7uhzZ.JPG


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz