Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder.

Ähnliche Präsentationen


Präsentation zum Thema: "1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder."—  Präsentation transkript:

1 1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder

2 Animation 2 Einführung In Java ist es möglich sogenannte Animationen zu erstellen. In einer möglichen Vorgehensweise wird schrittweise die Position des Bildes (Image) versetzt. Dies wird auch Cutout-Animation genannt. Eine zweite Möglichkeit ist, eine Folge von Bilder in der richtigen Reihenfolge nacheinander darzustellen. Diese Methode nennt man auch Cartoon-Stil, es ist die gleiche Vorgehensweise wie bei einem Zeichentrickfilm.

3 Animation 3 Durch die einfache Darstellung der Bilder auf der Zeichenfläche entsteht ein unschöner Effekt. Die Animation flackert. Das Flackern hat folgende Ursache: Vor dem Aufruf der paint - Methode wird der Hintergrund der Animation gelöscht. D.h. der ganze Bereich wird in der Hintergrundfarbe neu gezeichnet. Die gebräuchlichste Methode das Flackern zu um gehen ist das Implementieren einer Doppelpufferung: DoubleBuffering arbeitet mit mehreren verschiedenen Graphic - Objekten. Deklarieren der Bilder und des Graphickontext Image bild; BufferedImage offBild; offBild = new BufferedImage(200,200, BufferedImage.TYPE_INT_RGB); Graphics2D offGraphic;

4 Animation 4 Zuerst wird ein Graphik-Objekt des Offscreen-Bildes, offBild erstellt. offGraphic = offBild.createGraphics(); In diesem Graphik-Kontext werden dann die notwendigen Operationen ausgeführt. Man kann zum Beispiel, die neue Positon des Bildes bzw. ein neues Bild dort einfügen. offGraphic.drawImage(bild[i], (offBild.getWidth()/2)- (bild[i].getWidth(this)/2), (offBild.getHeight()/2)- (bild[i].getHeight(this)/2), this); Das Image-Array bild[] beinhaltet für die Cartonn-Animation alle Images die für die Darstellung benötigt werden. Die nächsten zwei Parameter sind die Position, wo das Image zuerst im Graphik-Kontext des Offscreen-Bildes liegt Nach dem kompletten malen (aufbereiten des unsichtbaren Graphik- Kontext) wird das Image mit drawImage(offBild, x, y, ImageObserver);

5 Animation 5 auf den Graphik-Kontext des Panel kopiert. Dies kann deshalb funktionieren, da der Graphik-Kontext praktisch / bildlich gesehen mit dem zugehörenden Image immer noch verbunden ist. Alles was mit dem Graphik-Kontext (Objekt) geschieht wird auch auf dem Image vollführt. Das Praktische dabei ist, dass der Graphik-Kontext des Image und der des Panel vom gleichen Objekt-Typ sind. Sie sind also mit einander Kompatibel. So kann man das veränderte Offscreen-Image (in dem ja das normale Image eingefügt worden ist bzw. die Postion verändert wurde) in dem Panel schließlich an sehen.

6 Animation 6 BufferdImage Im JDK 1.2 gibt es die Klasse (Programmierhandbuch und Referenz, von Stefan Middendorf, Reiner Singer) BufferedImage, die direkt ein Offscreen-Image repräsentiert. Bei einem createImage()-Aufruf mit ist das zurückgelieferte Image- Exemplar vom Typ BufferedImage. Das ist deshalb möglich, da BufferedImage von Image abgeleitet ist. java.lang.Object -> java.awt.Image -> java.awt.image.BufferedImage Ein BufferedImage kann man auch direkt mit Hilfe des new-Operators angelegen: BufferedImage b_image = new BufferedImage (int x, int y, BufferedImage.TYPE_INT_RGB); Mit folgender Zeile erhält man das Graphics-Objekt des oben erstellten Bildes: Graphics b_imageGraphics = b_image.getGraphics(); In diesen Grafikkontext wird auf dieselbe Weise gezeichnet, wie in den Grafikkontext, der paint() -Methode übergeben wird.


Herunterladen ppt "1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder."

Ähnliche Präsentationen


Google-Anzeigen