Das ist eben offenbar nicht die Ursache. Ich habe jetzt viel an diesem einfachen Code herumprobiert. Dabei habe ich folgende Änderungen vorgenommen:pluto hat geschrieben:Das Dauert so lange, weil du alles doppelt machen musst:
Du musst ja erst alles in den Buffer zeichnen und ihn anschließend wieder auf den Anzeige-Canvas Kopieren. Aber anders geht es nicht.
- Zeichnen auf Buf.Canvas oder self.Canvas
- Buf.SetSize auskommentiert
- BitBlt auskommentiert
1. Zeichnen auf self.Canvas, BitBlt auskommentiert, Buf.SetSize auskommentiert: läuft schnell
2. Zeichnen auf self.Canvas, BitBlt auskommentiert, Buf.SetSize nicht auskommentiert: läuft schnell
3. Zeichnen auf Buf.Canvas, BitBlt auskommentiert, Buf.SetSize nicht auskommentiert: läuft langsam
Dass es langsam läuft sehe ich beim horizintalen Vergrößern, wenn das Fenster relativ groß ist (Ich halte den Finger am Rand meines Touchpads und vergrößere so gleichmäßig schnell). Schnell heißt es ruckelt fast nicht (keine weißen Flächen auszumachen). Langsam heißt man sieht, wie der Bereich neben der Toolbar über der Listbox (Die Listbox ist formfüllend unter der Toolbar angeordnet) erst etwa 20px breit(!!!) weiß gezeichnet wird (EraseBackground ist also schon durch?), bevor er dann (in der Paint-Methode?) mit clBtnFace gefüllt wird. Die Zeit, die vergeht, während dieser weiße Kasten angezeigt wird, wird wohl die Zeit sein, die meine Paint-Methode schluckt. Je länger diese Zeit ist, desto weniger oft wird neu gezeichnet und desto breiter (und damit auffälliger) ist der neuzuzeichnende Bereich in der Toolbar.
So jetzt interpretiert bitte diese Ergebnisse. Meiner Meinung nach ist das Zeichnen auf Buf.Canvas allein der zeitraubende Vorgang. Gibt es eine andere Klasse mit Canvas, die schneller ist als TBitmap?