Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Grafiken performant über Form bewegen

  Alt 25. Dez 2004, 16:51
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
  Mit Zitat antworten Zitat