Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   bmp Datein TRANSPARENT in TImageList laden (https://www.delphipraxis.net/187244-bmp-datein-transparent-timagelist-laden.html)

Ykcim 11. Nov 2015 08:51

bmp Datein TRANSPARENT in TImageList laden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,

ich möchte eine eigene Klasse für alle verwendeten TImgaLists in meinem Programm verwenden. Daher habe ich die benötigten TImageLists im Code erstellt und muss jetzt die Bilder ebenfalls per Code einlesen. Das mache ich wie folgt:
Delphi-Quellcode:
procedure TBilder.Load_Ribbon_Activ;
var  image : TBitmap;
      PNG : Tpicture;
      Pfad: string;
      LSearchRec: TSearchRec;
begin
   Pfad:=ExtractFilePath(ParamStr(0))+'\Symbole\48x48_activ\';
   FIL_Ribbon_Activ.Height:=48;
   FIL_Ribbon_Activ.Width:=48;
   FIL_Ribbon_Activ.DrawingStyle:=dsTransparent;
   FIL_Ribbon_Activ.BlendColor:=clNone;
   png := TPicture.Create;
   image := TBitmap.create;

   if FindFirst(Pfad + '*.*', faNormal, LSearchRec) = 0 then begin
      repeat
         if LSearchRec.Attr and faDirectory = 0 then begin
            png.LoadFromFile(Pfad+LSearchRec.Name);
            image.Assign(png);
            FIL_Ribbon_Activ.AddMasked(image,clNone);
         end;
      until FindNext(LSearchRec) <> 0;
      FindClose(LSearchRec);
   end;
   png.Free;
   image.Free;
end;
Im OnCreate-Ereignis der Form weise ich den Buttons dann erst die TImageList zu und gebe dann den Index an
Delphi-Quellcode:
begin
   Glow_Start_Drucken.Images:=Bilder.IL_Ribbon_Activ;
   Glow_Start_Drucken.ImageIndex:=0;
end;
Da ich die Bild-Dateien mit einer Zahl vorweg benenne (00_zurueck.bmp; 01_vor.bmp) kenne ich auch die Reihenfolge in der TImageList.

Alles klappt. Das einzige, was ich nicht hinbekomme, dass die Bilder auf den Buttons TRANSPARENT angezeigt werden. Ich habe immer die Hintergrundfarbe (siehe Anhang).

Lieder habe ich mit der Suche keine für mich umsetzbare Antwort gefunden, und frage daher in die Runde.

Vielen Dank
Patrick

Neutral General 11. Nov 2015 09:47

AW: bmp Datein TRANSPARENT in TImageList laden
 
Es sollte funktionieren, wenn du bei AddMasked statt clNone die entsprechende Transparenzfarbe angibst, also z.B. clFuchsia.
Was relativ dynamisch funktionieren sollte ist das hier:

Delphi-Quellcode:
FIL_Ribbon_Activ.AddMasked(image,image.Canvas.Pixels[0,0]);
Da wird einfach der Pixel ganz oben links als Referenz für die Transparenzfarbe genommen.

Ykcim 11. Nov 2015 10:48

AW: bmp Datein TRANSPARENT in TImageList laden
 
Spitze!!!

So klappt es. Ich hatte es zwar versucht, indem ich die Farbe angegeben hatte ($00FF00FE), aber das hatte nicht funktioniert.

Gerade mal getestet: Hätte ich die Farbe mit clFuchsia angegeben statt mit $00FF00FE, dann hätte es sofort geklappt...

So klappt es aber prima.
Vielen Dank!
Patrick


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