Einzelnen Beitrag anzeigen

Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#15

AW: PNG zur Laufzeit in ImageList einfügen

  Alt 10. Feb 2011, 18:14

Ähm... Worin besteht das Problem?
Wird einem Bitmap ein PNG-Bild zugewiesen, wird automatisch (falls vorhanden) die Transparenz übergeben und das Bitmap hat 32 Bit Farbtiefe (RGBA). Wird das Bitmap jetzt zur Image-Liste hinzugefügt, wird auch dabei die Transparenz berücksichtigt. Einzige Bedingung dabei: TImageList.ColorDepth muß auf cd32Bit stehen.

Delphi-Quellcode:
procedure TForm1.FormShow(Sender: TObject);
var
  Bmp: TBitmap;
begin
  Bmp:=TBitmap.Create;
  try
    //Die Übergabe der Bilddaten erfolgt dabei von
    //TPNGImage.AssignTo(Bmp):
    Bmp.Assign(Image1.Picture.Graphic);
    //Die Maske ist egal, weil der Alpha-Kanal schon
    //im Bitmap enthalten ist:
    ImageList1.Add(Bmp,nil);
  finally
    Bmp.Free;
  end;
end;
Weshalb also die ganzen Kopfstände mit GDI+, TPngImageList und Co.?

P.S.:
Text wird nun einmal ohne Hintergrund gerendert. Willst Du das nicht, setze
Delphi-Quellcode:
Canvas.TextFlags:=Canvas.TextFlags or ETO_OPAQUE;
//...
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom (10. Feb 2011 um 18:22 Uhr)
  Mit Zitat antworten Zitat