Java2D Richard Göbel.

Slides:



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

der Universität Oldenburg
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Definition von Klassen in Java
Java: Programmierung grafischer Oberflächen
Threads Richard Göbel.
Java: Reversi Spielbrett
Java: Objektorientierte Programmierung
FH-Hof Geometrie Richard Göbel. FH-Hof Aufbau des virtuellen Universums.
Sortierverfahren Richard Göbel.
Java: Programmierung grafischer Oberflächen
Java: Dynamische Datentypen
Einführung in die Programmierung von 3D-Grafiken Basis ist Java3D
Listen Richard Göbel.
Sortierverfahren Richard Göbel.
FH-Hof Servlets Richard Göbel. FH-Hof Konzept Servlets werden auf der Server-Seite durch ein Formular aufgerufen werten die Eingaben aus einem Formular.
FH-Hof Automatisches Erzeugen von Geometrie Richard Göbel.
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
FH-Hof Scalable Vector Graphics Richard Göbel. FH-Hof Einführung Scalable Vector Graphics (SVG) - Darstellung von Vektorgraphiken in einem Web-Browser.
FH-Hof Java3D - Grundlagen Richard Göbel. FH-Hof Java3D Konzept Erzeugung eines Szenengraphen als virtuelle Welt Darstellung der virtuellen Welt mit Hilfe.
Strategy Pattern Richard Göbel.
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Ein Beispiel in Java.
Konstruktoren.
Polymorphie (Vielgestaltigkeit)
Interface bzw. Schnittstelle anschaulich: Hüllenklasse
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.
Sommersemester 2004 Jan Drewnak Entwicklung und Einsatz von Geosoftware I Praktikum Sitzung 8 Sitzung 8: Zeichnen in Java.
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.
Abstrakter Datentyp in C++ I - Klasse -
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.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Transformationen 09-Transformationen.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
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.
10-Graphics2D Graphics2D. 10-Graphics2D2 Eigenschaften von Graphics2D Trennung zwischen Userkoordinaten und Gerätekoordinaten Beliebige Transformation.
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 1 XML-Parser Richard Göbel. FH-Hof 2 XML-Parser- DOM Object Tree Parser Objekt der Klasse 'DocumentBuilderFactory' mit 'newInstance()' erzeugen.
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.
Grafikprogrammierung
Benutzeroberflächen mit Java
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
1.2 Attribute und Methoden Aufbau einer Java-Klasse:
Delphi TCanvas Informatik-AG. TCanvas Viele der sichtbaren in Delphi vorhanden Objekte besitzen die Eigenschaft Canvas. Übersetzt heißt Canvas Leinwand.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Programmierpraktikum Java SS 2005
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.
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Polymorphie (Vielgestaltigkeit). Wenn eine Methode, wie z.B. print für verschiedene Programmteile steht (und z.B. einmal Objekte verschiedener Klassen.
Java-Kurs - 6. Übung Besprechung der Hausaufgabe
GUI Programmierung in Java Branimir Djordjevic. GUI - Wichtige Begriffe -  Die Swing-Bibliothek in Java stellt zum Beispiel die folgenden Windows zur.
Java Programme nur ein bisschen objektorientiert.
Vererbung in Java. public abstract class Form { protected int breite; protected int hoehe; protected String farbe; /** * Erzeuge eine Form der Breite.
Venusspiegel und Marsschild
Java-Kurs Übung Grafik in Java - das Abstract Windowing Toolkit
Java-Kurs Übung Klassen und Objekte: Vererbung (Fortsetzung)
 Präsentation transkript:

Java2D Richard Göbel

Java2D bildet die Basis für die Definition eigener Komponenten Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung von Bildern Java2D bildet die Basis für die Definition eigener Komponenten Java2D unterstützt das Drucken

Definition der Method „paint“ in dieser Unterklasse Java2D - Ansatz Definition einer Unterklasse für eine Komponente ohne Inhalt, zum Beispiel: Canvas (AWT) JPanel (Swing) JComponent (Swing) Definition der Method „paint“ in dieser Unterklasse Die Methode „paint“ wird automatisch bei dem (Neu-) Zeichnen der Grafik aufgerufen

Aufbau einer Klasse für eine Grafik public class <className> extends JComponent { // Attribute mit den zu zeichnenden Daten . . . public void paint (Graphics g) Graphics2D g2 = (Graphics2D) g; // ab hier wird gezeichnet }

Inhalt der Methode „paint“ Zeichenmethoden für Graphics2D: draw Zeichnen grafischer Objekte fill Füllen grafischer Objekte Grafische Objekte Rectangle2D Ellipse2D . . . Kontext für das Zeichnen Klasse „Stroke“ ist der Zeichenstift: Breite, Höhe, etc. Klasse „Paint“ ist die Farbe

Koordinatensystem 100 200 100 200

Ausgabe eines Rechtecks public class myRectangle extends JComponent { Rectangle2D.Float s = new Rectangle2D.Float(10,10,100,200); public void paint (Graphics g) Graphics2D g2 = (Graphics2D) g; g2.setStroke(new BasicStroke(1)); g2.draw(s); }

Einfache Graphische Objekte: Klassen Linie: Line2D, Line2D.Float, Line2D.Double Quadratische Kurve: QuadCurve2D.Float, QuadCurve2D.Double Kubische Kurve: CubicCurve2D.Float, CubicCurve2D.Double Rechtecke: Rectangle2D.Float, Rectangle2D.Double Ellipse: Ellipse2D.Float, Ellipse2D.Double Segment einer Ellipse: Arc2D.Float, Arc2D.Double

Einfache Grafische Objekte: Darstellung Teil 1 (x1, y1) (x2, y2) Line2D.Float(float x1, float y1, float x2, float y2) QuadCurve2D.Float(float x1, float y1, float cx, float cy, float x2, float y2) (x1, y1) (x2, y2) (cx1, cy1) CubicCurve2D.Float(float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2) (cx2, cy2) (x1, y1) (x2, y2) (cx1, cy1)

Einfache Grafische Objekte: Darstellung Teil 2 Rectangle2D.Float(float x, float y, float w, float h) (x, y) w h Ellipse2D.Float(float x, float y, float w, float h) (x, y) w h

Einfache Grafische Objekte: Darstellung Teil 3 Arc2D.Float(float x, float y, float w, float h, float s, float e, int type) (x, y) e s h w type = CHORD type = PIE type = OPEN

Kombination von Objekten: GeneralPath p = new GeneralPath(); p.moveTo(x1,y1); p.lineTo(x2,y2); p.quadTo(cx, cy, x3,y3); p.lineTo(x4,y4); (x1, y1) (x2, y2) (cx, cy) (x3, y3) (x4, y4)

Kombination von Objekten: AREA a1 = new Area(new Rectangle2D.Float( . . . ) a2 = new Area(new Rectangle2D.Float( . . . ) a1.add(a2) a1.exclusiveOr(a2) a1.intersect(a2) a1.subtract(a2)

Bestandteile des Kontext Zeichenstift: Stroke Füllfarbe: Paint Transformationen: AffineTransform Weitere Attribute: Hintergrund Rendering Hints Clip-Bereich

Basis: Interface Stroke Implementierende Klasse: BasicStroke Zeichenstift Basis: Interface Stroke Implementierende Klasse: BasicStroke Parameter für die Klasse BasicStroke: Breite Gestaltung von Ecken Muster für gestrichelte Linien Setzen des Zeichenstifts <graphics2d>.setStroke(new BasicStroke(. . .))

Konstruktoren für die Klasse BasicStroke BasicStroke( float width) BasicStroke( float width, int cap, int join) BasicStroke( float width, int cap, int join, float miterlimit, float[] dash, float dash_phase)

Ende einer Linie: Parameter „cap“ CAP_BUTT CAP_SQUARE CAP_BUTT

Ende einer Linie: Parameter „join“ JOIN_BEVEL JOIN_MITER JOIN_ROUND

Muster für gestrichelte Linien: Parameter dash Für den Parameter „dash“ wird ein Array für den Datentyp „float“ erwartet Das Array muss eine gerade Anzahl von Elementen enthalten Die Länge der Liniensegmente wird mit den geraden Elementen definiert Die Länge der Zwischenräume wird mit den ungeraden Elementen definiert Der Startpunkt innerhalb des Musters wird mit Hilfe des Parameters „dashphase“ festgelegt,

Beispiel für eine gestrichelte Linie float[] pattern = { 1, 19, 10, 10 }

Füllfarbe: Optionen Einheitliche Farbe mit der Klasse „Color“, z.B.: Color(float r, float g, float b) Farbverlauf mit der Klasse „GradientPaint“, z.B.: GradientPaint(float x1, float y1, Color col1, float x2, float y2, Color col2, boolean cyclic) Textur mit der Klasse „TexturePaint“, z.B.: TexturePaint(BufferedImage txtr, Rectangle2d anchor) Setzen der Füllfarbe: <graphics2d>.setPaint( . . . )

Beispiele für Füllfarbe new Color(1f,1f,0f) new TexturePaint(...) new GradientPaint(30, 40, new Color(1f,0,0), 60, 70, new Color(0,1f,0), ...) cyclic = true cyclic = false

Mit diesem Ansatz lassen sich verschiedene Ausgabemedien unterstützen: Transformationen Auf alle Punkte eines zu zeichnenden Objekts wird zunächst eine Transformation angewendet Mit diesem Ansatz lassen sich verschiedene Ausgabemedien unterstützen: Bildschirm Drucker Palm . . . Die Transformation wird mit Hilfe einer 3  3 Matrix als Objekt der Klasse „AffineTransformation“ dargestellt

Methoden von Graphics2D für Transformationen Änderung der aktuellen Transformation rotate(double theta, double x, double y) scale(double sx, double sy) shear(double shx, double shy) translate(double tx, double ty) Neue Transformation setzen setTransform(AffineTransform Tx)

Statische Funktionen von AffineTransformation getRotateInstance(double theta, double x, double y) getScaleInstance(double sx, double sy) getShearInstance(double shx, double shy) getTranslateInstance(double tx, double ty)