Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#15

AW: Resize: Inhalt von MainForm bleibt unverändert

  Alt 30. Jan 2019, 04:42
Hmm..


Hi,

Wozu hat TImage dann ein Canvas?
In der Dokumentation heißt es, dass man überall, wo ein Canvas enthalten ist, darauf zeichnen kann.

Meine Antwort von gestern, 15:44, habe ich jetzt noch einmal erweitert um ein lauffähiges Unit1.pas.

Der Effekt ist noch etwas anders, als bisher beschrieben.
Nach Start des Programms und Vergrößern der Breite von MainForm werden Image1 und der ScrollBar automatisch mit vergrößert. Aber der Canvas offensichtlich nicht!

Jede von TGraphicControl abgleitete Komponente hat ein Canvas..

Auch ein TLabel...

Mals Du darauf?

Das TImage nutzt seinen Canvas, um entsprechend der Parameter ein 'Image' (z.B. Bitmap...) in seinen Bereich zu malen.
Bei einem Resize wird entsprechend das Image neu gemalt.
Wenn nun kein Image da ist, dann passiert einfach nichts.

Teste mal was passiert, wenn du ein (beliebiges) anderes Fenster nach deinem Malen und anschließendem Resize über dein Fenster hinweg ziehst..
Es sollte dein gemaltes verschwinden, wie bei einer Paintbox ohne OnPaint...

Ein Label würde auch verschwinden, jedoch wird in dessem OnPaint der Text immer wieder neu gemalt.

Hat ein TImage ein 'OnPaint'?
Nicht das ich es unter published gefunden habe..

Wieso wohl?
Weil vom Ersteller der Komponente nicht vorgesehen wurde, dass auf einer TImage-Komponente direkt gemalt werden soll...
TImage ist hat nur zum 'Anzeigen' von Images gedacht.

Wenn Du skaliert malen willst, dann weise dem TImage ein Bitmap zu und male immer nur auf diesem.
Dieses ist zum malen vorgesehen und wird bei einem Resize durch das TImage wieder neu gezeigt..

(Habe den Thread nur überflogen und bin mir eigentlich sicher, dass dies auch schon so geschrieben wurde...)
  Mit Zitat antworten Zitat