Im Grunde einfach alles was sich auf dem Formular bewegen soll im Vorfeld auf einem Bitmap zusammenkopieren, und das dann komplett auf's Form zeichnen.
Mal etwas Pseudocode (ich nehme an, dass die zu bewegenden Teile einzeln in Bitmaps vorliegen, und die Graphics32 mitspielt
):
Delphi-Quellcode:
uses
..., GR32, ...;
.
.
.
var
Sprites: array of TBitmap32; // mal angenommen für die zu bewegenden Teile...
.
.
.
procedure TForm1.OnPaint(...);
var
BackBMP: TBitmap32;
begin
BackBMP := TBitmap32.Create;
BackBMP.SetSize(Form1.ClientWidth, Form1.ClientHeight);
BackBMP.Clear(Color32(Form1.Color));
Sprites[0].DrawTo(BackBMP, PosX1, PosY1);
Sprites[1].DrawTo(BackBMP, PosX2, PosY2);
.
.
BackBMP.DrawTo(Form1.Canvas.Handle);
BackBMP.Free;
end;
Noch schneller dürfte es sein, wenn das BackBMP Member der Formklasse ist, so dass du es nicht jedes Mal neu instanziieren musst, sondern nur "Clear"-en.
Hoffe das hilft!
Grüzli,
Fabian
\\edit: Was da u.U. noch viel besser wäre, wäre ein TImage32 im Hintergrund auf deiner Form, und dann mit der "Layers"-Eigenschaft zu arbeiten. Das ist im ersten Moment etwas ungewohnt, aber die Hilfe zur G32 ist da echt nicht übel
.
Das dürfte dann nochmals viiiiel Schneller sein, und im Endeffekt auch komfortabler!
\\edit2: @Chistian: Jupp genau das meinte ich mit dem ersten Edit 8)
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel