08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

der Universität Oldenburg
Klassen - Verkettete Liste -
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Anwendungen des OODM auf die ADB / NDB
Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Verteilte Software - Java - Prozedurale Programmierung 1
Grundlagen der Programmierung (GP) Prof. Dr. H. Schlingloff Joachim Hänsel
Java: Reversi Spielbrett
Java2D Richard Göbel.
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
AUFGABE 1: Ein Wagen (dargestellt durch ein Rechteck) soll sich von links nach rechts bewegen. Tipp: Timer benutzen AUFGABE 2: Zusätzlich zu Aufgabe.
Ein Beispiel in Java.
Softwaretechnologie II WS 08/09 SpieleProgrammieren UlTris V07 Reihen vorbelegen, Spielfeld anzeigen und Punktestand ausrechnen Sibylle C. Schellhorn,
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
Sommersemester 2003 Lars Bernard
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
Einführung in die OOP in Java
Institut für Kartographie und Geoinformation Prof.-Dr. Lutz Plümer, Dr. Gerhard Gröger, Dipl.-Ing. Dirk Dörschlag Einführung in die Programmierung mit.
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.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
Proxy Pattern Vorlesung Design Patterns Sieglinde Heinrich
1DVG3 - Eventbehandlung Eventbehandlung. DVG3 - Eventbehandlung 2 Events Events sind externe Ereignisse, die parallel zum normalen Programmablauf auftreten.
1DVG3 - Paint Teil 2 Paint Teil2. DVG3 - Paint Teil 2 2 Weitere Entwicklungen Hinzufügen verschiedener Werkzeuge: Punkte Linien Rechtecke, Rechtecke mit.
1DVG3 - eigene AWT-Komponenten Entwicklung eigener AWT-Komponenten.
Modulare Programmierung
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
UNDO & SELECT Vortrag : Martin Hiersche
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
DVG Klassen und Objekte
03 - Paint Das Zeichenprogramm EMMA Paint2 Aufgabenstellung Entwicklung eines ausschließlich in JAVA programmierten Graphikprogrammes. Vergleichsprodukte:
12-Drucken Drucken in JAVA. 12-Drucken2 Probleme beim Drucken: Es können nur graphische Informationen gedruckt werden. Die zu druckende Information muss.
04 - Actions Actions Actions 2 Motivation In verschiedenen Swing-Komponenten werden ausgelöste Aktionen durch ActionListener behandelt. Häufig werden.
10-Graphics2D Graphics2D. 10-Graphics2D2 Eigenschaften von Graphics2D Trennung zwischen Userkoordinaten und Gerätekoordinaten Beliebige Transformation.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
06-EMMA-GUI Das EMMA-GUI. 06-EMMA-GUI 2 Aufteilung des Bildes (Applikation) Menü - Balken Dateiwerkzeuge Zeichenwerkzeuge Meldungen, Informationen, Fehler.
© 2005 Pohlig – Taulien: Eine GUI für die Klasse Mathematik Kurs: Come Together 1 April 2005 Eine GUI für die Klasse Mathematik.
© 2005 Pohlig – Taulien: Die Matheamatik-GUI als Applet Come Together 1 April 2005 Was ist ein Applet Ein Applet ist ein Javaprogramm, das die VM benutzt,
FH-Hof Java2D - Grundlagen Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
FH-Hof Singleton Pattern Richard Göbel. FH-Hof Motivation Bestimmte Klassen sollen nur ein Objekt haben Nur ein Fabrikobjekt für eine Fabrikklasse Zentraler.
Wieder und wieder und wieder …. Nicht vor Pilz? ja Schritt vorwärts.
AWT und JFC Abstract Windowing Toolkit
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Abteilung für Telekooperation Übung Softwareentwicklung 2 für Wirtschaftsinformatik Dr. Wieland Schwinger
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 6
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Equals, Hashcode und CompareTo Micha Kessler
Visual Design mit Processing Übung Visualisierung semantischer Information.
Learning By Doing Ereignissteuerung (Events) prozedural ereignisgesteuert Unterprogrammaufruf an fest codierter Stelle Wann immer der Event auftritt, führe.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Lind 02/2005 Einführung in JAVA. Lind 02/2005 Beispiel: Mittelwert Es soll ein Programm erstellt werden, das den Mittelwert zweier reeller Zahlen berechnet.
Programmiervorkurs WS 2014/15 Methoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Java-Kurs Übung Benutzeroberflächen und Graphik
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java Programme nur ein bisschen objektorientiert.
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Implementieren von Klassen
 Präsentation transkript:

08-GraphikImplementierung Implementierung der Graphik in EMMA301Paint

08-GraphikImplementierung2 In EMMA301Paint sind nun wesentlich Funktionen implementiert: Fenster zum Zeichnen graphischer Objekte Graphische Objekte Darstellungsarten für graphische Objekte Es fehlt noch die Möglichkeit graphische Objekte zu erzeugen und zu bearbeiten. Was muss implementiert werden: Auswahl welche Art Objekt erzeugt werden soll (Button, Menü, Popup- Menü) Eingabe der für diese Objekt nötigen Daten (Koordinateneingabe mit Hilfe der Mouse und Anzeige der Zwischenstände) Erzeugung des Objektes Zuordnung des Objektes zu einer Graphik Beispiel: Erzeugen eines Linien-Objektes

08-GraphikImplementierung3 Einfügen in die GUI Um verschiedene Objekte erzeugen zu können, wird eine globale Variable paintType eingerichtet, die die Information darüber aufnimmt: public static final int PAINT_NOTHING=0; public static final int PAINT_LINE=1; public static final int PAINT_RECTANGLE=2; public static final int PAINT_OVAL=3; public static final int PAINT_POLYLINE=4; public static final int PAINT_POLYGON=5; private int paintType = PAINT_NOTHING; Globale Action-Variable: private Action lineAction; lineAction = new Action(parent, 9, "Linie", "pictures/line.gif", "Zeichnen einer Linie", 'l');

08-GraphikImplementierung4 Einfügen in den Tools-Bar, das Menü und das Popup-Menü: toolsBar.add(createButton(lineAction)); toolsMenu.add(new JMenuItem(lineAction)); popupMenu.add(new JMenuItem(lineAction)); Auswertung der Actions: public void actionPerformed(ActionEvent e) { switch (typ) { case 9: paintType=PAINT_LINE; break; } }

08-GraphikImplementierung5 Eingabe der Daten Daten bestehen aus den Koordinaten des Anfangspunktes und des Endpunktes. Welchen Algorithmus will man verwenden? 1. Mouse ohne gedrückte linker Taste zum Anfangspunkt der Linie bewegen. 2. Mouse-Taste drücken Koordinaten des Punktes werden als Anfangspunkt (x1, y1) gespeichert. 3. Mouse mit gedrückter linker Taste zum Endpunkt bewegen bei jedem Punkt wird ein temporäres graphisches Objekt erzeugt, das als Linie angezeigt wird. 4. Am Endpunkt wird die Mouse-Taste losgelassen Die Koordinaten werden als Endpunkt (x2,y2) der Line gespeichert, es wird das Line- Objekt erzeugt und dem aktuellen EMMA301PaintFrame hizugefügt.

08-GraphikImplementierung6 1. Es ist keine Programmierung erforderlich 2. Globale Variable für die Speicherung der Koordinaten private int x1, y1, x2, y2; Methode zur Implementierung des MouseListeners public void mousePressed(MouseEvent e) { x1=e.getX(); y1=e.getY(); } 3. Methode zur Implementierung des MouseMotionListeners public void mouseDragged(MouseEvent e) { int x2=e.getX(); int y2=e.getY(); EMMA301PaintFrame selectedIF = (EMMA301PaintFrame)desktopPane.getSelectedFrame(); switch (paintType) { case PAINT_LINE: selectedIF.setTemporaryGraphicalObject( new Line(activeStroke, activeColor, x1, y1, x2, y2)); break; } }

08-GraphikImplementierung7 4. Methode zur Implementierung des MouseListeners public void mouseReleased(MouseEvent e) { x2=e.getX(); y2=e.getY(); EMMA301PaintFrame selectedIF = (EMMA301PaintFrame)desktopPane.getSelectedFrame(); switch (paintType) { case PAINT_LINE: selectedIF.addGraphicalObject(new Line (activeStroke, activeColor, x1, y1, x2, y2)); break; } }

08-GraphikImplementierung8 Temporäre Darstellung Bei der Eingabe der Daten müssen kontinuierlich die Zwischenergebnisse angezeigt werden. Diese muss schnell und präzise sein es werden die paintRaw-Methoden del GraphicalObjects verwendet. Wenn man diese Zwischenergebnisse kontinuierlich mit den schon definierten graphischen Objekte zusammen im selben Graphik-Kontext darstellen würde könnte das sehr langsam sein. Ausweg: die schon fertigen Objekte werden im Graphik-Kontext des ContentPane dargestellt und das temporäre Objekt im Graphik-Kontext der GlassPane.

08-GraphikImplementierung9 private GraphicalObject tempGraphic = null; setGlassPane(new JPanel() { { setOpaque(false); } public void paintComponent(Graphics g) { super.paintComponent(g); paintTempGraphics((Graphics2D)g); } }); public void paintTempGraphics (Graphics2D g) { if (tempGraphic!=null) tempGraphic.paintRaw(g); }

08-GraphikImplementierung10 public void setTemporaryGraphicalObject (GraphicalObject graphicalObject) { tempGraphic = graphicalObject; getGlassPane().setVisible(true); getGlassPane().repaint(); } public void removeTemporaryGraphicalObject() { tempGraphic = null; getGlassPane().setVisible(false); }