Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Bewegung: Animation durch Off-Screens

  Alt 18. Sep 2007, 10:37
doubleBuffered ist eigentlich nur notwendig wenn du wirklich Komponenten wandern lässt. Dies hat allerdings den Nachteil das die Auslasung sehr hoch werden kann. Denn sobald du irgend eine Komponente (TImage etc.) bewegst wird sofort neu gezeichnet. Wenn du also 10 Dingen nacheinander bewegst (die Position änderst) wird 10 mal neu gezeichnet.

Um eine ordentliche Performance zu erreichen hab ich es bisher so gemacht:
- Eine Displaykomponente
- eine Bildkomponente (von TComponent abgeleitet)

Die Bildkoponenten haben das property Display wo die Displaykomponente zugewiesen werden kann.
Wenn sich das bild ändert (oder die Position) sagt diese Komponente einfach der Displaykomponente das diese sich neu zeichnen müsste (inklussive aller Bildkomponenten die sich darauf darstellen). Die Displaykomponente zeichnet jetzt aber nicht sofort alle Bildkomponenten sondern setzt einfach ein Flag das neu gezeichnet werden müsste.

Delphi-Quellcode:
procedure TDisplay.CheckRedrawTimer(Sender: TObject);
begin
  if (lastdraw + 40000 < GetTickCount()) and (fNeedRedraw) then
  begin
    lastdraw := GetTickCount();
    Invalidate();
  end;
end;
Wie man genau so etwas macht ist eben eine Sache des Programmierers. Programmieren heißt ja nicht einfach nur tippen sondern sich auch Gedanken zu machen wie man etwas am besten umsetzt.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat