AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein bmp Datein TRANSPARENT in TImageList laden
Thema durchsuchen
Ansicht
Themen-Optionen

bmp Datein TRANSPARENT in TImageList laden

Ein Thema von Ykcim · begonnen am 11. Nov 2015 · letzter Beitrag vom 11. Nov 2015
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

bmp Datein TRANSPARENT in TImageList laden

  Alt 11. Nov 2015, 08:51
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
Angehängte Grafiken
Dateityp: bmp Button mit pinkem Hintergrund.bmp (17,0 KB, 10x aufgerufen)
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: bmp Datein TRANSPARENT in TImageList laden

  Alt 11. Nov 2015, 09:47
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:

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.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: bmp Datein TRANSPARENT in TImageList laden

  Alt 11. Nov 2015, 10:48
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
Patrick

Geändert von Ykcim (11. Nov 2015 um 10:50 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:30 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