Frankieboy - Do 29.04.10 13:45
Titel: TImage.Picture aus TImageList laden
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:
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:
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 - 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:
- 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:
- Beim Holen der Bilder kannst du so vorgehen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.RadioGroup1Click(Sender: TObject); begin Image1.Picture := NIL; ImageList1.GetIcon(RadioGroup1.ItemIndex,Image1.Picture.Icon); end; |
cu
Narses