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/)
-   -   Delphi Transparentes Bitmap aus TImageList/Resource-Datei (https://www.delphipraxis.net/6634-transparentes-bitmap-aus-timagelist-resource-datei.html)

frankg 17. Jul 2003 12:17


Transparentes Bitmap aus TImageList/Resource-Datei
 
Hallo!

Ich entwickle gerade eine von TComboBoxEx abgeleitete Klasse, die eine vorbelegte Combobox mit Icons links neben den Einträgen darstellen soll (deswegen TComboBoxEx). Um die ComboBox mit Icons zu versorgen benötigt man eine TImageList-Komponente, die ich beim Erzeugen der Komponente mit erzeuge. Die Bitmaps für die Image-Liste werden aus einer Resource-Datei geladen, was auch hervorragend klappt. Das einzige Problem, das ich jetzt noch habe ist, dass die Hintergrundfarbe der Bitmaps nicht durchsichtig ist. Folgender Code füllt die Combo-Box:

Delphi-Quellcode:
procedure TmyComboBox.DropDown;
var
  myBitmap : Graphics.TBitmap;
  i : Integer;
begin
  inherited DropDown;
  if Items.Count = 0 then
    begin
      Cursor := crHourGlass;
      myBitmap := TBitmap.Create;
      myBitmap.LoadFromResourceName(HInstance,'MYIMAGE');
      // Nächste Zeile bewirkt nichts
      myBitmap.Transparent := TRUE;
      FPrtImage.Add(myBitmap,nil);
      FillComboBox;
      Cursor := crDefault;
      for i := 0 to ItemsEx.Count-1 do
        ItemsEx[i].ImageIndex := 0;
      myBitmap.Free;
    end;
end;
Wie gesagt, im Prinzip funktioniert der Code, die Hintergrundfarbe der Icons wird aber nicht transparent angezeigt. Ich habe auch schon versucht anstelle einer Ressource vom Typ Bitmap eine Ressource vom Typ Symbol (mit dem selben Namen) zu verwenden. Diese Resource hat Delphi dann aber nicht mehr gefunden. Wahrscheinlich ist das hier ein ganz blöder Fehler, ich komm' momentan einfach nur nicht drauf.

Viele Grüsse und schon mal vielen Dank

Frank :coder:

FriFra 17. Jul 2003 13:14

Re: Transparentes Bitmap aus TImageList/Resource-Datei
 
Versuch es mal damit:
Delphi-Quellcode:
      FPrtImage.AddMasked(myBitmap,myBitmap.Canvas.Pixels[0,myBitmap.Height-1]);
Im Beispiel wird die Farbe des linken unteren Pixels als Transparenzfarbe verwendet.

frankg 17. Jul 2003 13:26

Re: Transparentes Bitmap aus TImageList/Resource-Datei
 
Hi FriFra!

Perfekt, das wars. :dancer:

Vielen Dank und viele Grüsse

Frank


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