Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum 29.06.2004 Sitzung 8 Sitzung 8: Zeichnen in Java.

Slides:



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

der Universität Oldenburg
Ein Beispiel in Java.
Rekursive Grafiken Reklursive Grafiken.
Java: Reversi Spielbrett
Java: Objektorientierte Programmierung
Java2D Richard Göbel.
Java: Dynamische Datentypen
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.
Abstrakte Klassen.
Grafische Benutzeroberfläche
Ein Beispiel in Java.
Sommersemester 2003 Lars Bernard
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 6 Model-View-Controler als Grundlage für Nutzerschnittstellen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 5 Sitzung 5: Polymorphismus.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung X1 Sitzung X1: Packages & Wiederholung.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 7 User Interfaces in Java Sommersemester 2003 Lars Bernard.
AWT – Detailbetrachtung Java 3D – Seminar im Wintersemester 2002/2003 Christian Schneider.
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.
Java-Kurs - 7. Übung Besprechung der Hausaufgabe Referenzvariablen
Programmieren mit JAVA Teil V. Grafikausgabe mit JAVA, das AWT Java wurde von Anfang an mit dem Anspruch entwickelt, ein vielseitiges, aber einfach zu.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG1 - Grafikprogrammierung1 Grafikprogrammierung.
1DVG3 - Paint Paint ein Zeichenprogramm. DVG3 - Paint 2 Paint – ein Zeichenprogramm.
1 Animation (Doublepuffering) Vorlesung: Datenverarbeitung Grundlagen 3 Fachbereich II - Mathematik Rolf Heitzenröder.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG A bstract W indow T oolkit. DVG Als standardisierte portable Grafikschnittstelle existiert in JAVA das Package AWT - Abstract Window.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Transformationen 09-Transformationen.
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.
DVG Graphik in Swing Graphik in Swing. DVG Graphik in Swing 2 Zeichnen von Objekten in Swing Die Klasse JComponent enthält die Methode.
© 2005 Pohlig GK Informatik K Zum JFrame Step by step by step by step by step by step by step by step by.
Vererbung Einfache Vererbung – Erben von abstrakten Klassen – Implementieren eines Interfaces.
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.
Sitzung 3: Klassen, Objekte, Arrays und Kontrollstrukturen
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 6 Sitzung 6: Model-View-Controller als Grundlage.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 7 Sitzung 7: User Interfaces in Java.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
AWT und JFC Abstract Windowing Toolkit
Benutzeroberflächen mit Java
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Applets Java für’s Web.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Programmierpraktikum Java SS 2005
EPROG Tutorium #5 Philipp Effenberger
CuP - Java Achzehnte (und LETZTE. ) Vorlesung : 1
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.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs Übung Benutzeroberflächen und Graphik
Java-Kurs Übung Benutzeroberflächen und Graphik Frames (Fenster)
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
Einführung in die OOP in Java
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Schnittstellen.
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
Grundkurs Informatik 11-13
 Präsentation transkript:

Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java

Zeichnen in Java Die Klasse Component Die zentrale Klasse für alle AWT-Elemente Alle GUI-Klassen erben von Component Für Swing wird die Klasse JComponent benutzt (die aber auch von Component erbt)

Zeichnen in Java Die Klasse Component Component ist eine abstrakte Klasse (die paint-Methode ist nicht implementiert) Alle GUI-Elemente überschreiben die paint- Methode und malen sich selbst: Ein Button zeichnet in paint einen Button Ein TextField zeichnet in paint den Text...

Zeichnen in Java Zeichnen von AWT - Komponenten AWT-Komponenten zeichnen sich mit Hilfe der paint() Methode selbst. Sequentieller Aufruf von: repaint() update() paint()

Zeichnen in Java Zeichnen von AWT - Komponenten Component.repaint() Aufruf wenn das Fenster (Container) verschoben wird die Größe des Containers verändert wird ein verdeckter Teil des Container-Inhaltes wieder frei gegeben (sichtbar) wird […]

Zeichnen in Java Zeichnen von AWT - Komponenten Component.repaint() Component.getGraphics() Liefert spezialisierte Instanz der abstrakten Graphics-Klasse: Grafik-Kontext, in den gezeichnet werden kann repräsentiert ein universelles Ausgabegerät für Grafik und Schrift, Kapselt alle Zeichenoperationen: stellt Methoden zur Erzeugung von Linien, Füll- und Schriftelementen zur Verfügung,Methoden verwaltet die Zeichenfarbe und den Font in dem Textausgaben erfolgen sollen.

Zeichnen in Java Zeichnen von AWT - Komponenten Component.repaint() Component.update(Graphics g) Component.getGraphics() Standardmäßig: Löschen des Hintergrundes (mit background color) Zeichnen des Komponenten-Inneren durch Aufruf der paint()- Methode

Zeichnen in Java Zeichnen von AWT - Komponenten Component.repaint() Component.update(Graphics g) Component.paint(Graphics g) Component.getGraphics() Zeichnet in das Graphics-Objekt Wird zur Darstellung eigener Komponenten überschrieben

Zeichnen in Java Die Klasse Graphics Graphics kapselt alle Zeichen-Operationen Die Klasse ist abstrakt Zeichnet direkt in den Bildschirmspeicher

Zeichnen in Java Die Klasse Graphics - Methoden abstract Rectangle getClipBounds() Liefert den äußeren Rand des zu zeichnenden Bereichs abstract void setColor(Color c) Setzt die aktuelle Farbe abstract void setFont(Font f) Setzt die aktuelle Schriftart abstract void drawString(String s, int x, int y) Zeichnet den String s an der Position (x,y) abstract void drawArc(...) Zeichnet einen Kreis abstract void drawRect(...) Zeichnet eine Rechteck abstract void drawLine(...) Zeichnet eine Linie

Zeichnen in Java Graphics - example class GISViewer extends JPanel { Dimension preferredSize = new Dimension(400,150); public Dimension getPreferredSize() { return preferredSize; } public void paintComponent(Graphics g) { super.paintComponent(g); //paint background g.fillRect(50, 50, 20, 20); } }

Zeichnen in Java Graphics - example GISFrame(String s) {... // add components: contentPane.add(new GISViewer());.... }

Zeichnen in Java Zeichnen von AWT - Komponenten Ausgabe von Grafik basiert auf einem zweidimensionalen Koordinatensystem Ursprungspunkt (0,0) liegt in der linken oberen Ecke Die Maßeinheit entspricht einem Bildschirmpixel und ist damit geräteabhängig

Zeichnen in Java Koordinatentransformation Jedes Grafik-Objekt lebt in einem Bildschirm- Koordinatensystem (u,v) Geoobjekte leben in einem Welt-Koordinatensystem (x,y) Somit ist zur Darstellung von Geoobjekten zumeist eine Koordinaten-Transformation (x,y) (u,v) notwendig

Zeichnen in Java Koordinatentransformation x y v u v u Probleme: unterschiedliche Orientierung unterschiedliche Skalen der beiden Koordinatensysteme

Zeichnen in Java Arten von Transformationen

Zeichnen in Java Arten von Transformationen Translationen T (Verschiebung) Rotationen R (Drehung) Skalierungen M (Maßstabsänderung) Scherung S Affintransformationen: T, R, M, S

Zeichnen in Java Affine Transformationen verbreitete Transformation zwischen allen Punkten einer Ebene erfordert 6 Parameter (in 2D)

Zeichnen in Java Affine Transformationen m 00, m 11 : Streckungs-/Stauchungsfaktoren m 01, m 10 : Scherfaktoren m 02, m 12 : Translation (Verschiebung)

Zeichnen in Java Transformationen in Java Graphics2D Seit Java 1.2 verfügbar unterstützt affine Transformationen Rotationen Streckungen Verschiebungen erbt von Graphics In Java 1.2 können Graphics-Objekte in Graphics2D umgewandelt werden: Graphics2D g2D=(Graphics2D) g;

Zeichnen in Java Transformationen in Java class AffineTransform 6 Parameter, einzeln setzbar: set-/getScaleX, -ScaleY => m00, m11 set-/getShearX, -ShearY => m01, m10 set-/getTranslateX, -TranslateY => m02, m12

Zeichnen in Java import java.awt.geom.*;... void updateTransformation(){ //initialize transformation af.setToIdentity(); // RealWorld x and y extent, asssuming there is maxX etc. double dx = maxX - minX; double dy = maxY - minY; // isotropic scaling: double scaleX = getWidth()/ dx; double scaleY = getHeight()/ dy; if (scaleX < scaleY) af.scale(scaleX,-scaleX); else af.scale(scaleY,-scaleY); //...and translation af.translate(-minX(),-maxY()); } import java.awt.geom.*;... void updateTransformation(){ //initialize transformation af.setToIdentity(); // RealWorld x and y extent, asssuming there is maxX etc. double dx = maxX - minX; double dy = maxY - minY; // isotropic scaling: double scaleX = getWidth()/ dx; double scaleY = getHeight()/ dy; if (scaleX < scaleY) af.scale(scaleX,-scaleX); else af.scale(scaleY,-scaleY); //...and translation af.translate(-minX(),-maxY()); } Beispiel Transformationen

Zeichnen in Java Zu Aufgabe 6 Zunächst Realisierung des in diesen Folien enthaltenen Beispiels (Malen des Rechtecks) Machen Sie sich klar wie der Algorithmus für eine Transformation von Geokoordinaten in Bildschirmkoordinaten aussieht! Zum Nachlesen im Tutorial : Overview of the Java 2D API Abgabe am Samstag,