Hallo Experten,
kann mir jemand erklären, unter welchen Bedingungen die OnPaint()-Methode eines Panels aufgerufen wird?
Der Hintergrund ist der:
Ich habe ein Objekt von Panel abgeleitet, auf dem ich einige Objekte zeichne und das scrollbar ist.
Die Objekte sind keine Controls, sie enthalten lediglich Farben und Koordinaten in Form von Punkten und Pfaden. Ihre Methode Draw() wird mit den PaintEventArgs aus MyPanel.OnPaint() aufgerufen. Die Objekte sind verform- und verschiebbar.
Wenn mehr als ein Dutzend dieser Objekte existiert, dann geht das Verschieben der Objekte nicht mehr flüssig. Das Ruckeln wird stärker, je mehr Objekte auf dem Panel liegen.
Die Koordinaten im Objekt werden beim Verschieben neu berechnet. Ich möchte nun die Rechenlast senken, indem nur das neu gezeichnet wird, was sich verändert hat. Aber in einem Test werden ständig alle Objekte neu gezeichnet, auch ohne einen aufruf von Panel.Invalidate() meinerseits.
Nach welchem Schema wird Panel.Invalidate() systemseitig aufgerufen?
Mit freundlichem Gruß,
luker
kann mir jemand erklären, unter welchen Bedingungen die OnPaint()-Methode eines Panels aufgerufen wird?
Der Hintergrund ist der:
Ich habe ein Objekt von Panel abgeleitet, auf dem ich einige Objekte zeichne und das scrollbar ist.
Die Objekte sind keine Controls, sie enthalten lediglich Farben und Koordinaten in Form von Punkten und Pfaden. Ihre Methode Draw() wird mit den PaintEventArgs aus MyPanel.OnPaint() aufgerufen. Die Objekte sind verform- und verschiebbar.
Wenn mehr als ein Dutzend dieser Objekte existiert, dann geht das Verschieben der Objekte nicht mehr flüssig. Das Ruckeln wird stärker, je mehr Objekte auf dem Panel liegen.
Die Koordinaten im Objekt werden beim Verschieben neu berechnet. Ich möchte nun die Rechenlast senken, indem nur das neu gezeichnet wird, was sich verändert hat. Aber in einem Test werden ständig alle Objekte neu gezeichnet, auch ohne einen aufruf von Panel.Invalidate() meinerseits.
Nach welchem Schema wird Panel.Invalidate() systemseitig aufgerufen?
Mit freundlichem Gruß,
luker
Comment