Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#12

Re: Canvas Bewegen (schnee programm)

  Alt 4. Jan 2008, 15:06
Das Prinzip ist ganz einfach:
Jede Schnee Flocke ist ein Object was sich seinen Hintergrund merkt wo es drauf gezeichnet wurde.
Beim Neu Zeichnen stellst du den hintergrund wieder her und zeichnest deine neue Position.

Allerdings gibt es hier ein kleines Problem wenn sich mehrer Objekte überlagern kommt es zu Grafik Fehlern.

Bei meiner 2D Engine habe ich das so gelöst:
Wie oben beschrieben aber bevor ich neu zeichne wird ein event ausgelöst was an die Engine geht.
die wieder rum veranlasst das jetzt in jedem Spritemanger jeder Sprite der in den geänderten Bereich passt neu gezeichnet wird. So umgehst du die Grafik Fehler und du musst nicht ständig deine flocke neu zeichnen bzw. dein Hintergrund Bild.

Da aber der Schnee Fallen soll könntest du auch so vorgehen:
Du packst einmal dein hintergrund in einem Bitmap dann hast du einen Buffer
jetzt kopierst du mit Bitbtl oder Draw den Hintergrund in den Buffer und zeichnest einfach deine Flocken an der neuen Position. Dazu müsstest du aber ein Array anlegen wo alle Flocken drin sind.

Diese Weg führt aber mit Sicherheit zu 100% CPU Last beim ersten weg hängt das von den Stellen ab wie oft neu gezeichnet wird.

Mit der Engine würde das Prima gehen ist allerdings für Lazarus geschrieben, aber mit wenigen Änderungen sollte auch unter Delphi laufen. evlt. lade ich sie mal hoch wenn ich sie dafür vorbereitet habe.
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat