Thema: Delphi Icon pixelfrei

Einzelnen Beitrag anzeigen

Benutzerbild von Sunlight7
Sunlight7

Registriert seit: 17. Sep 2006
Ort: Sonnensystem, Zentral
1.522 Beiträge
 
Delphi 5 Standard
 
#25

Re: Icon pixelfrei

  Alt 5. Feb 2008, 14:44
Das Du das Icon nicht siehst liegt daran, das in GetIcon mit MyIcon.Free; (auch MyIconH) freigegeben wird.

Es scheint so, als hättest Du meinen QT nicht richtig interpretiert, denn das sind 3 Möglichkeiten, von der jede einzelne funktionieren würde.

Wenn Du nur vor hast die Icons irgendwo drauf zu malen, dann würd' ich mir einfach das IconHandle wo sichern um es mit DrawIconEx zu zeichnen.
Somit kann man auch ganz lässig die Hintergrundfarbe ändern

Delphi-Quellcode:
...
  private
    { Private-Deklarationen }
    Icons:Array[0..255] of HIcon;
  public
    { Public-Deklarationen }
    procedure FreeIcons;
    procedure LoadIcons;
...

procedure TForm1.FormCreate(Sender: TObject);
begin
   Randomize;
   Color:=Random(16777216);

   LoadIcons;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
   FreeIcons;
end;

procedure TForm1.FormPaint(Sender: TObject);
   var i:Byte;
begin
   // Icons zeichnen
   For i:=0 to High(Icons) do
      if Icons[i]>1 then
         DrawIconEx(Canvas.Handle, 10+(i * 32), 10, Icons[i], 32, 32, 0, Brush.Handle, DI_NORMAL);
end;

procedure TForm1.FormClick(Sender: TObject);
begin
   Color:=Random(16777216);
end;



procedure TForm1.FreeIcons;
   var i:Byte;
begin
   // Icons freigeben
   For i:=0 to High(Icons) do
      if Icons[i]>1 then
         DeleteObject(Icons[i]);

   ZeroMemory(@Icons, SizeOf(Icons));
end;

procedure TForm1.LoadIcons;
   var i:Byte;
begin
   FreeIcons;

   // Icons laden
   For i:=0 to High(Icons) do begin
      Icons[i]:=ExtractIcon(0, '%WinDir%\Explorer.exe', i);
      If Icons[i]<=1 then Break;
   end;
end;
Windows: Ja - Microsoft: Nein -> www.ReactOS.org
  Mit Zitat antworten Zitat