Guten Abend zusammen!
Ich möchte mehrere Bilder als Thumbnails auf meine Programmoberfläche zeichnen. Dazu habe ich eine Scrollbox erstellt, welche ein Flowpanel beinhaltet.
Zu diesem Flowpanel füge ich zur Laufzeit TPaintBox-Objekte hinzu und zeichne mit der
GDI+-Bibliothek (
http://www.bilsen.com/gdiplus/index.shtml) die Thumbnails auf deren Zeichenflächen.
Meine Thumbnail-Klasse speichert zusätzlich den Dateinamen und sieht so aus:
Delphi-Quellcode:
type
TThumbnail = class(TPaintBox)
private
FFilename: String;
public
property Filename: String read FFilename write FFilename;
end;
Die Thumbnails werden (per Schleife über eine Liste von Dateinamen (f)) so erzeugt:
Delphi-Quellcode:
Image := TGPImage.Create(f);
Thumbnail := Image.GetThumbnailImage(150, 150, nil, nil);
OutputImage := TThumbnail.Create(Self);
OutputImage.AlignWithMargins := true;
OutputImage.Height := 150;
OutputImage.Width := 150;
OutputImage.Filename := f;
OutputImage.Cursor := crHandPoint;
OutputImage.OnClick := ThumbnailClick;
OutputImage.Parent := flwpnlImageView;
Graphics := TGPGraphics.Create(OutputImage.Canvas.Handle);
Graphics.DrawImage(Thumbnail, 0, 0, Thumbnail.Width, Thumbnail.Height);
Nun ist das Problem, dass mir die Bilder zwar kurz angezeigt werden, kurz darauf aber wieder verschwinden.
Ich habe die Vermutung, dass sich die Paintboxen bedingt durch die Scrollbox neu zeichnen und dann wieder leer sind.
Interessanterweise funktioniert das ganze, wenn ich TThumbnail von TImage ableite. Ich würde der Geschwindigkeit wegen aber lieber TPaintbox benutzen.
Hat vielleicht jemand eine Idee, was ich versuchen könnte, um die Bilder dauerhaft zu sehen?
Grüße
Simon
Edit2: Sorry für den halbfertigen Post zu Beginn, ich hab' versucht den Code mit TAB einzurücken und hab Enter gedrückt - zack, schon war's abgeschickt...