Du zeichnest doch momentan alles auf Form.Canvas.
Anstatt das zu machen, musst du eine globale Variable nehmen.
z.B:
Die musst du natürlich z.B. ihm OnCreate-Ereignis des Formulars initialisieren:
fBuffer := TBitmpa.Create; // nicht vergessen, beim Beenden fBuffer.Free auszuführen!
Im OnResize-Ereignis des Formulars muss folgender Code:
Delphi-Quellcode:
fBuffer.Width := Form.Width;
fBuffer.Height := Form.Height;
Nun zeichnest du nicht mehr auf Form.Canvas, sondern änderst alles so um, dass nur noch auf fBuffer.Canvas gezeichnet wird.
Im OnPaint-Ereignis des Formulars:
Delphi-Quellcode:
Canvas.CopyRect(Rect(0,0,fBuffer.Width,fBuffer.Height), fBuffer.Canvas,
Rect(0,0,fBuffer.Width,fBuffer.Height));
Da das OnPaint nicht ständig aufgerufen wird (glaub ich, bin mir grad nicht sicher) müsstest du am Ende des Zeichnens (Roboter auf fBuffer.Canvas) noch folgenden Code ausführen:
Form.Invalidate;