Einzelnen Beitrag anzeigen

SiLo0815

Registriert seit: 23. Feb 2017
Ort: Essen, NRW
7 Beiträge
 
Delphi XE5 Enterprise
 
#1

TPaintbox löscht Zeichenfläche selbstständig (GDI+)

  Alt 24. Feb 2017, 00:06
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...
Simon

Geändert von SiLo0815 (24. Feb 2017 um 00:19 Uhr)
  Mit Zitat antworten Zitat