Einzelnen Beitrag anzeigen

peterbelow

Registriert seit: 12. Jan 2019
Ort: Hessen
672 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Canvas: Richtig zeichnen

  Alt 21. Jun 2019, 13:30

Du hast das doch im Wesentlichen schon in dem Thread https://www.delphipraxis.net/201012-...rschieben.html gefragt. Hast Du die Antworten da nicht gelesen?
Hallo,
doch, gelesen habe ich die Beiträge. Allerdings habe ich es noch nicht so richtig verstanden.
Mir ist klar, dass ein Fenster kein dauerhaften Speicher hat und ich deswegen eine Paintbox(??) und eine Bitmap(??) benötige.
Warum aber reicht es nicht aus, nur auf der Paintbox oder nur auf einer Bitmap zu zeichnen? Warum benötige ich beide?
Das ist mir noch nicht ganz klar.
Naja, eine Paintbox hat auch keinen internen Speicher für den angezeigten Inhalt. Daher muss man alles jeweils neu zeichnen, wenn das von Windows angefordert wird, und dafür gibt es den OnPaint Event. Eine TBitmap hat zwar einen Speicher für die Sachen, die Du auf ihrem Canvas zeichnest, aber sie ist kein TControl, man kann sie also nicht direkt auf einem Form plazieren und sie so angezeigt bekommen. Daher braucht es dazu noch ein Control, das in der Lage ist, die Bitmap anzuzeigen. Dafür hast Du zwei Optionen:
  • TPaintbox + eine von die im Kode angelegte TBitmap. Im OnPaint-Event zeichnest Du die Bitmap auf den Canvas der Paintbox.
  • TImage. Dieses Control kann diverse Grafikformate anzeigen, aber man kann es auch als Zeichenfläche verwenden. Wenn man den Canvas des Images anspricht zeichnet man auf eine Bitmap, die TImage intern nach Bedarf anlegt. Vorteil: TImage zeigt die Bitmap automatisch an. Nachteil: bei komplexen Zeichenoperationen ist das langsam und kann flickern.

Die erste Option ist mein Favorit. Auf die Bitmap kann man jederzeit zeichnen und sie behält ihren Inhalt. Um sie anzuzeigen ist nur wenig Kode im OnPaint-Event der Paintbox notwendig.
Peter Below
  Mit Zitat antworten Zitat