Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

FH-Hof Java2D Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung von Bildern.

Kopien: 1
FH-Hof Java 2D - Kontext für Zeichenoperationen Richard Göbel.

Ähnliche Präsentationen


Präsentation zum Thema: "FH-Hof Java2D Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung von Bildern."—  Präsentation transkript:

1 FH-Hof Java2D Richard Göbel

2 FH-Hof 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

3 FH-Hof 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

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

5 FH-Hof 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...

6 FH-Hof Koordinatensystem

7 FH-Hof 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); }

8 FH-Hof 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

9 FH-Hof Einfache Grafische Objekte: Darstellung Teil 1 Line2D.Float(float x1, float y1, float x2, float y2) QuadCurve2D.Float(float x1, float y1, float cx, float cy, float x2, float y2) (x 1, y 1 ) (x 2, y 2 ) CubicCurve2D.Float(float x1, float y1, float cx1, float cy1, float cx2, float cy2, float x2, float y2) (x 1, y 1 )(x 2, y 2 ) (cx 1, cy 1 ) (cx 2, cy 2 ) (cx 1, cy 1 ) (x 1, y 1 ) (x 2, y 2 )

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

11 FH-Hof Einfache Grafische Objekte: Darstellung Teil 3 Arc2D.Float(float x, float y, float w, float h, float s, float e, int type) (x, y) w h se type = CHORDtype = OPENtype = PIE

12 FH-Hof 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); (x 1, y 1 ) (x 2, y 2 ) (x 3, y 3 ) (x 4, y 4 ) (cx, cy)

13 FH-Hof 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)

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

15 FH-Hof 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.setStroke(new BasicStroke(...))

16 FH-Hof 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)

17 FH-Hof Ende einer Linie: Parameter cap CAP_BUTT CAP_SQUARE CAP_BUTT

18 FH-Hof Ende einer Linie: Parameter join JOIN_BEVEL JOIN_MITER JOIN_ROUND

19 FH-Hof 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,

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

21 FH-Hof 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:.setPaint(... )

22 FH-Hof 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 = false cyclic = true

23 FH-Hof 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

24 FH-Hof 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)

25 FH-Hof 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)


Herunterladen ppt "FH-Hof Java2D Richard Göbel. FH-Hof Java2D - Funktionen Java2D unterstützt: das Zeichnen von Grafiken die Darstellung von Texten die Darstellung von Bildern."

Ähnliche Präsentationen


Google-Anzeigen