Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   PNGImageCollection Bild in ICON laden (https://www.delphipraxis.net/198469-pngimagecollection-bild-icon-laden.html)

DieDolly 5. Nov 2018 17:46


PNGImageCollection Bild in ICON laden
 
Ich arbeite mich gerade in TPNGImageList und Collection ein.
Ich habe PNGImageCollection entdeckt aber blicke nicht ganz durch wie ich dort ein PNG mittels des Namens laden kann.

Ich nutze zwar einen class helper aber das funktioniert nicht, da die Typen inkompatibel sind.
Delphi-Quellcode:
procedure TPngImageCollectionUtils.LoadImageByName(const Name: string; Icon: TIcon);
begin
 Icon := Items[2];
end;

DieDolly 5. Nov 2018 18:52

AW: PNGImageList mit mehreren Unterlisten
 
Edit:
doch nicht erledigt. Habe zwar hier eine Antwort gefunden https://www.delphipraxis.net/172944-pngimagelist.html
aber ich weiß trotzdem nicht wie ich ein Icon zurückgebe. Beispielsweise um ein PNG aus der Collection zu laden und als Programmicon zu setzen.

KodeZwerg 6. Nov 2018 06:59

AW: PNGImageCollection Bild in ICON laden
 
Ich nutze diese Komponente nicht aber so würde ich ohne Vorgehen (mit TImageList):
Delphi-Quellcode:
var
  Img: TImage;
  BmImg: TBitmap;
  Bmp: TBitmap;
  BmpMask: TBitmap;
  IconInfo: TIconInfo;
  Ico: TIcon;
begin
  Img := TImage.Create(nil);
  Img.Picture.LoadFromFile(...

  BmImg := TBitmap.Create;
  BmImg.Assign(Img.Picture.Graphic);
  Img.Free;

  Bmp := TBitmap.Create;
  Bmp.SetSize(ImageList1.Width, ImageList1.Height);
  SetStretchBltMode(Bmp.Canvas.Handle, HALFTONE);
  StretchBlt(Bmp.Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height,
              BmImg.Canvas.Handle, 0, 0, BmImg.Width, BmImg.Height, SRCCOPY);
  BmImg.Free;

  BmpMask := TBitmap.Create;
  BmpMask.Canvas.Brush.Color := clBlack;
  BmpMask.SetSize(Bmp.Width, Bmp.Height);

  FillChar(IconInfo, SizeOf(IconInfo), 0);
  IconInfo.fIcon := True;
  IconInfo.hbmMask := BmpMask.Handle;
  IconInfo.hbmColor := Bmp.Handle;

  Ico := TIcon.Create;
  Ico.Handle := CreateIconIndirect(IconInfo);

  ImageList1.AddIcon(Ico);

  Bmp.Free;
  BmpMask.Free;
  Ico.Free; // calls DestroyIcon
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:59 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