Ich habe das gestern noch etwas umgebaut:
Das Formular wird jetzt im Mainthread fortlaufend aktualisiert - mehr passiert dort nicht mehr.
Die "Businesslogik" (die vorliegend nur die Positionen der "Panels" neu berechnet) ist jetzt in einem Objekt gekapselt und läuft in einem eigenen Thread.
Die
VCL-Controls senden nur "Anweisungen" an die Buisinesslogik (BL), z.B. wird dort der Wert für Sleep geändert, der die Geschwindigkeit der BL regelt.
Insofern erfolgt die Neuzeichnung des Formulars ständig gleich schnell und die Geschwindigkeit der sichtbaren Verschiebungen hängt nur vom Ablauf der Neuberechnungen in der BL ab (also vom Sleep-Wert).
Wenn man Sleep runter regelt sieht man, wie fix die Änderungen erfolgen können. Es ist dabei schon ein Unterschied zwischen meinem privaten (schnellen) und meinem dienstlichen (langsamer) Rechner zu sehen.
Das Ganze ist noch nicht der Weisheit letzter Schluss, aber die Grundausrichtung finde ich nicht schlecht.
Letztlich will ich zu einer Lösung komplett ohne
VCL (also ohne Bitmaps und Canvas) kommen. Offenbar führt die
VCL zu verschiedenen Problemen wenn die Anzahl der Zeichenaktionen zu iel wird.
Z.B. habe ich einen kleinen "AniIndicator" gebaut, der sich fortlaufend neu zeichnet. Dabei zerhaut irgend etwas die Bitmaps. Offenbar verkraftet die
VCL die Überbelastung nicht bzw. kommt dann mit der Formularsyncronisation nicht klar.
Der Grundgedanke der Komponentenzeichnung im Hintergrund und des späteren Zusammenbaus des Formulars mit den fertigen Bausteinen gefällt mir aber. Ich werde mich wohl mal mit
OpenGL befassen (müssen).
Falls wer das Thema reizvoll findet und mitrödeln will... sehr gern! Einfach melden!