Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#22

AW: Multithreaded Zeichnen

  Alt 4. Jul 2018, 22:01
So, noch eine Stunde später, noch eine Erkenntnis:
Die TBitmap.SaveToFile Methode macht etwas (für mich) unerwartetes. Die Bitmap wird auf einem TSurfaceBitmap assigned, und erst das wird dann gespeichert. Was genau eine TSurfaceBitmap ist, kann ich mangels Doku nicht sagen, aber wenn ich statt der Speichermethode diesen hohlen Dreizeiler ausführe:
Delphi-Quellcode:
      surf := TBitmapSurface.Create;
      surf.Assign(fBMP);
      surf.Free;
Dann wird die Bitmap immer korrekt angezeigt (TBitmapSurface benötigt FMX.Surfaces).

Mag das einer erklären

Sherlock
Das TBitmapSurface ist so eine Art einheitliches Datenformat, das als Transferschnittstelle mit dem Bitmap-Codec-Manager zusammenarbeitet, um das Speicherbitmap in eine Datei oder einen Stream zu speichern oder zu lesen.

Warum die Aktionen, die beim surf.assign (fmbp) stattfinden, zur anschließenden Aktualisierung führen, kann ich mangels Testmöglichkeit nur vermuten, ich würde eine gewisse Möglichkeit bei "TMonitor.Enter", bzw. letztlich bei "TMonitor.Exit" sehen, da hier bestimmte Benachrichtigungen ans System übermittelt werden.

Versuch doch einfach mal nur mit TMonitor.enter (fbmp) und TMonitor.exit (fbmp).

Geändert von Harry Stahl ( 5. Jul 2018 um 17:25 Uhr)
  Mit Zitat antworten Zitat