Und zur Performance, ich würde hier mit InvalidateRect arbeiten,
und im Paint nur das zeichnen, was im übergebenen Rect liegt.
Kannst du mir das etwas erläutern? Wo wird denn im meinem Paint ein Rect übergeben?
Vor dem Aufruf von Paint wird für den Canvas automatisch eine Clipping-Region gesetzt, in der neu zu zeichen ist.
Die Region kann eine beliebige Form haben. Es können weiterhin auch Zeichenbefehle an den Canvas gesendet werden, die darüber hinaus gehen.
Die Zeichenoperationen werden aber nur in diesem Bereich ausgeführt. Das sorgt schon mal für eine Beschleunigung.
Wenn man weiter optimieren muss, im Paint Canvas.ClipRect abfragen und nur die Daten ermitteln und zeichnen, die tatsächlich gebraucht werden.