![]() |
TImage mit Bild aus ImageList füllen
Hallo Gemeinde.
Ich stehe mir wieder mal selbst auf den Füßen: Ich möchte zur Laufzeit einer TImage-Komponente ein Bild aus einer ImageList zum Anzeigen übergeben. Ich dachte so müßte es klappen:
Delphi-Quellcode:
Aber es tut sich nix -- der Code wird durchlaufen aber ich sehe kein Bild. Auch ein myImage.Repaint hilft nicht weiters. In der ImageList befindet sich nur ein Bitmap (256x256 Pixel groß).
myImageList.GetBitmap(0, myImage.Picture.Bitmap);
Was mache ich falsch? Habt ihr eine Idee? Vielen Dank & Gruß Jazzman |
AW: TImage mit Bild aus ImageList füllen
Schau dir mal TImageList.Draw() an
|
AW: TImage mit Bild aus ImageList füllen
Hallo!
Nützt auch nix:
Delphi-Quellcode:
:pale:
myImageList.Draw(myImage.Picture.Bitmap.Canvas,0,0,0);
Ich stehe wirklich auf dem Schlauch. Jazzman |
AW: TImage mit Bild aus ImageList füllen
Kommado zurück!
Es funtioniert sehr wohl: myImageList.Draw(myImage.Picture.Bitmap.Canvas,0,0 ,0); (Ich hatte gerade intern ein kleines techniches Problem - vulgo: "Tomaten auf den Augen"). Aber trotzdem hätte ich eine kleine Nachfrage: Weshalb klappt folgendes nicht: myImageList.GetBitmap(0, myImage.Picture.Bitmap); Ich frage deshalb nach, weil ich zu einem späterem Zeitpunkt die Bitmap in myImage weitergeben muß -- aber mit myImageList.Draw(myImage.Picture.Bitmap.Canvas,0,0 ,0); habe ich ja keine Bitmap. Sondern nur eine Zeichnung auf dem Canvas des myImages. Vielen Dank Jazzman |
AW: TImage mit Bild aus ImageList füllen
Zitat:
So mache ich das auch, allerdings benutze ich
Delphi-Quellcode:
, weil dann auch das mit der Transparenz besser klappt.
ImageList.GetIcon( Index, Image.Picture.Icon );
Intern wird aber letztendlich immer
Delphi-Quellcode:
aufgerufen. Somit spielt es eigentlich keine Geige.
TPicture.SetGraphic
Das Malen auf dem Canvas halte ich hier eher für ungeschickt, da man dieses ja ständig (selber) wiederholen müsste. Sonst häng doch mal eine kleines Beispiel-Projekt an, dann schau ich da mal drüber. Kann eigentlich nur eine Kleinigkeit sein :) |
AW: TImage mit Bild aus ImageList füllen
Delphi-Quellcode:
.
ImageList1.Draw(Image1.Picture.Bitmap.Canvas, 0, 0, 0);
Kann garnicht funktionieren, wenn noch kein Bitmap im Picture drin war, denn der Lesezugriff auf Picture.Bitmap würde in diesem Fall ein neue TBitmap erstellen, mit den Seitenlängen von 0. Und wenn man in das Bild etwas reinmalt, dann sieht man natürlich nicht viel.
Delphi-Quellcode:
.
ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
Geht bei mir ohne Probleme, da GetBitmap die Größe des TBitmap anpaßt. |
AW: TImage mit Bild aus ImageList füllen
Hallo zusammen!
Ja, es funktionert tatsächlich auch mit: ImageList1.GetBitmap(0, Image1.Picture.Bitmap); Ich hab keine Ahnung, was da vorher so schief war: Ich habe jedenfalls zwischenzeitlich die Größen angepasst. Weiss nicht ob das der Grund war... Vielen Dank an alle! Gruß Jazzman |
AW: TImage mit Bild aus ImageList füllen
Hallo zusammen,
ich habe das gleiche Problem und nix funktioniert. Ich verwende ein normales TImage unter Delphi2010 mit einer TImagelist die PNG dateien mit 32 farbtiefe und transparent flag gesetzt. Nach setzten mit
Delphi-Quellcode:
wird nur die Bitmap transparent, ist das transparent flag aus wird das bitmap nach dem belegen schwarz.
ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
hat irgendjemand einen Rat für mich ?! |
AW: TImage mit Bild aus ImageList füllen
GetIcon ....
|
AW: TImage mit Bild aus ImageList füllen
Es blieb auch mit getIcon schwarz.
Das Problem lag an der einstellung ImageType der Timagelist! irgendwie stand sie auf itMask, sie muss aber auf itImage stehen =). Und mit getIcon wird der hintergrund auch transparent! Vielen Dank bummi =) |
AW: TImage mit Bild aus ImageList füllen
Besser wäre hier wohl eine Ableitung von TImage oder eigene Komponente. Denn es macht keinen Sinn das Bild aus der Imagelist zu kopieren und die ganze Zeit mehrfach im Speicher zu halten. Eigentlich genügt es doch vollkommen das Bild beim Zeichnen direkt aus der Imagelist zu nehmen. (Hier würde vermutlich auch eine Paintbox etc. genügen)
|
AW: TImage mit Bild aus ImageList füllen
hey..
kann es sein dass man mit
Code:
nur einmal einen bild in eine timage laden kann?...
ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
beim 1. mal funktioniert es.. wenn ich dann später aber diesen code ausführe und das bild mit der nummer 1 anzeigen will
Code:
tut sich nichts....
ImageList1.GetBitmap(1, Image1.Picture.Bitmap);
|
AW: TImage mit Bild aus ImageList füllen
wenn bereits ein Bitmap vorhanden ist wird per ImageList1.GetBitmap auf dieses gemalt (kein neues erstellt), dass Image selbst bekommt davon nichts mit. Somit hast Du 2 Optionen,
Delphi-Quellcode:
begin
//OPT 1. wenn Du eine neues Bitmap willst Image1.Picture := nil; ImageList1.GetBitmap(1, Image1.Picture.Bitmap); //OPT. 2 wenn Du auf das bestehende Bitmap malen willst Image1.Invalidate; end; |
AW: TImage mit Bild aus ImageList füllen
thx.. wieder einmal was dazugelernt :)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz