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

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Seminar: "Einführung in C/C++" Einführung in die Programmiersprache C/C++ Donnerstag Andreas Döring SS 2004.
FH-Hof Texturen Richard Göbel. FH-Hof Anwendungen von Texturen Darstellung von 2D-Bildern Gestaltung von Oberflächen Simulation komplexer Geometrien...
Java2D Richard Göbel.
Java: Dynamische Datentypen
Listen Richard Göbel.
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
Java: Referenzen und Zeichenketten
Ein Beispiel in Java.
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. D. Dörschlag Einführung in die Programmierung mit Java.
Java-Kurs Grafik Julian Drerup.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
Programmieren mit JAVA
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
Verkettete Liste Visualisierung. New-Operator Mit dem New-Operator kann zur Laufzeit (dynamisch) Speicherplatz reserviert und angelegt werden Vorteil:
Bilder vergrößern ohne Qualitätsverlust
DVG3 - Bilder IMAGES (Bilder) Vortrag : Ronny Kuhnert am 9. November 1999.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
DVG1 - Applets1 Applets. DVG1 - Applets2 Die Klasse Applet n Applets sind Grafikobjekte, die unter Steuerung eines anderen Programms (z.B. eines Browsers,
1DVG3 - Einführung Einführung DVG3. DVG3 - Einführung 2.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
DVG Graphik in Swing Graphik in Swing. DVG Graphik in Swing 2 Zeichnen von Objekten in Swing Die Klasse JComponent enthält die Methode.
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
10. Vorlesung: Dynamische Konzepte
Java programmieren mit JavaKara
XNA 3D Tutorial Anzeigen eines Objektes. Inhalt Lernen Sie, wie Sie Modelle implementieren. Initializing Lernen Sie, wie Sie Modelle aus der Content Directory.
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Game Development mit LUA Integration und Kommunikation von LUA mit C++ Referat von Paul van Hemmen Seminar: Reusable Content in 3D und Simulationssystemen.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Folgendes: Es geht um eine Art Karte die sich aus Landkreisen zusammensetzt. Und zwar wird jetzt eine Folie dargestellt auf dieser der Landkreis groß dargestellt.
Tutorium PG Verbesserung Blatt 5 Beim instanziieren eines Fahrrades muss es möglich sein, alle benötigten Attribute dem Konstruktor zu übergeben.
Programmierpraktikum Java SS 2005
Objectives Verstehen was unterDelegate verstanden wird
Hier eine mögliche Antwort:
Grundlagen von PowerPoint
Anleitung zum Arbeiten mit verschiedenen Ebenen
Java-Kurs Übung Benutzeroberflächen und Graphik
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Applets und URLs APP Philip Graf, Andreas Bößl.
Java-Kurs Übung Besprechung der Hausaufgabe
Einführung in die OOP in Java
Objektorientierte Programmierung (OOP)
Diskrete Mathe Diskrete Mathematik I Listen Vorlesung 4.
Programmiersprachen II Fortsetzung Datenstrukturen Einfache Bäume Übung 13 Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Java Programme nur ein bisschen objektorientiert.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Tutorium Software-Engineering SS14 Florian Manghofer.
Graphics Klasse, die alle grundlegenden Methoden zum Zeichnen und Schreiben bereitstellt (draw -Methoden, Methoden zu Fonts und Colors) Bereitstellung.
Anforderungen an die neue Datenstruktur
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Programmierung und Vererbung in Java
Implementieren von Klassen
Felder in der Informatik
 Präsentation transkript:

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

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.

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;

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);

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.

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.