Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#26

AW: Für CopyRect passendes Ereignis?

  Alt 27. Jan 2016, 13:00
NOCHMAL zum MITLESEN.

Das Ändern des Labels löst ein Neuzeichnen dessen Canvas aus (TLabel und TImage haben aber kein eigenes Canvas, sondern leiten die Operationen an ihren Parent weiter)
Fazit: Die Form wird neu gezeichnet und schmeißt die Zeichenausgabe deines FEHLERHAFTEN Codes weg. (übermalt das wieder)

Label1.Caption:=... zeichnet nicht sofort, sondern verzögert, also nach deinem Code. (quasi PostMessage WM_PAINT)

Image.Canvas ist die "sichtbare" Zeichenfläche und Image.Picture.Canvas?, Image.Picture.Graphics.Canvas oder z.B. Image.Picture.Bitmap.Canvas ist der Canvas des internen Bildes.
PS: Rate mal was TImage mit dem Canvas der Oberfläche macht, wenn es das WM_PAINT bekommt.

In neueren Windowsen hat man zwar oft den Vorteil, daß sich der DesktopWindowManager (DWM) dazwischen klemmt, aber normaler Weise ist der Canvas des Fensters (und allem darauf) flüchtig.
CopyRect funktioniert, aber du vergisst bei einem Repaint der Form deine Ausgabe wieder herzustellen, bzw. du arbeitest auf der falschen Arbeitsfläche!
$2B or not $2B

Geändert von himitsu (27. Jan 2016 um 13:03 Uhr)
  Mit Zitat antworten Zitat