AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Icon pixelfrei

Ein Thema von Nils_13 · begonnen am 2. Feb 2008 · letzter Beitrag vom 24. Sep 2008
 
Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#10

Re: Icon pixelfrei

  Alt 2. Feb 2008, 13:13
Habe eine Funktion gefunden. Das Ergebnis sieht zwar besser aus, aber nicht gut genug. Es werden die weiten Pixel geschwärzt. Könnte man anstelle von Schwarz nicht einfach die Hintergrundfarbe nehmen und es wäre alles flüssig ?
Delphi-Quellcode:
function IconToBitmap(const IconHandle : HIcon) : TBitmap;
var IcoInfo : TIconInfo;
    Mask : TBitmap;
    X, Y : Word;
begin
  Mask := nil;
  Result := nil;
  if not GetIconInfo(IconHandle, IcoInfo) then
    Exit;

  try
    try
      Result := TBitmap.Create;
      Result.Handle := IcoInfo.hbmColor;
      Result.PixelFormat := pf32bit;

      Mask := TBitmap.Create;
      Mask.Handle := IcoInfo.hbmMask;
      Mask.PixelFormat := pf32bit;

      for X := 0 to Result.Width-1 do
        for Y := 0 to Result.Height-1 do
          pRGBALine(Result.Scanline[Y])^[X].rgbReserved := not pRGBALine(Mask.Scanline[Y])^[X].rgbRed;
    except
      FreeAndNil(Result);
    end;
  finally
    if Assigned(Mask) then
      Mask.Free;
  end;
end;

function GetIcon(filename : String; IconIndex: Integer) : TBitmap;
var NumberOfIcons : Integer;
    Ico : TIcon;
begin
  NumberOfIcons := ExtractIcon(hInstance, PChar(Filename), UINT(-1));

  Ico := TIcon.Create;
  if (Ico <> nil) and (NumberOfIcons > -1) then
    Ico.Handle := ExtractIcon(hInstance, PChar(Filename), IconIndex);
  Result := IconToBitmap(Ico.Handle);
  Result.Canvas.Draw(0, 0, Ico);
  Ico.Free;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:20 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz