Autor Beitrag
Frankieboy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 65



BeitragVerfasst: Do 29.04.10 13:45 
Hallo,

ich habe ein TImage, dessen Bild (TPicture) aus einer TImagList mit 2 Bildern geladen werden soll...
Es klingt einfach, funktioniert aber komischerweise nicht richtig :nixweiss:.

Image List heißt: ImageList_Test
Image heißt: Image_Test
Das Image hat zur Designzeit noch kein Picture.

Zuerst habe ich es so gemacht:
ausblenden Delphi-Quelltext
1:
ImageList_Test.GetBitmap(0,Image_Test.Picture.Bitmap);					

Das hat aber nur geklappt, als ich den Befehl im OnCreate des Forms aufgerufen habe, später ging es nicht mehr.

Also Nummer 2:
ausblenden Delphi-Quelltext
1:
2:
ImageList_Test.GetBitmap(0,Image_Test.Picture.Bitmap;
Image_Test.Refresh;

Hier klappt es während der ganzen Laufzeit, allerdings nicht mit Transparenz :evil:
Der Hintergrund des Bildes (im BMP weiß) wird leider nicht transparent dargestellt. Dabei habe ich im Image_Test die Transparenz auf "an" und in der ImageList Transparent auf "clWhite". Trotzdem wird der weiße Hintergrund mit gezeichnet.
Wenn ich das Picture von ImageTest direkt aus der BMP-Datei lade, funktioniert die Transparenz.

Hat jemand einen Tip?

Grüße,

Frank
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10183
Erhaltene Danke: 1256

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 29.04.10 14:44 
Moin!

Tja, die Anwendung von TImageList ist etwas tricky, da hab ich auch schon graue Haare bekommen... ;)

Es gibt da nach meiner Erfahrung zwei Knackpunkte:
  1. Du musst beim Füllen der ImageList bereits darauf achten, dass die Transparenz korrekt übernommen wird. Ich mache das immer so: alle Bilder so aufbereiten, dass die transparente Farbe gleich ist, sagen wir mal $FEFEFE. Jetzt alle Bilder auf einmal in die ImageList laden, die Auswahl nicht aufheben sondern direkt den Wert für die transparente Farbe im PropertyEditor auf $FEFEFE setzen und bestätigen. Dann sind alle Bilder bei mir immer korrekt in der Liste. :idea:
  2. Beim Holen der Bilder kannst du so vorgehen:
    ausblenden Delphi-Quelltext
    1:
    2:
    3:
    4:
    5:
    procedure TForm1.RadioGroup1Click(Sender: TObject);
    begin
      Image1.Picture := NIL// vorhandenes Bild entfernen, spart auch den Redraw
      ImageList1.GetIcon(RadioGroup1.ItemIndex,Image1.Picture.Icon); // als Icon holen, behält Transparenz ;-)
    end;
cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.