Sitzung 8 zeichnen in java
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Sitzung 8: Zeichnen in Java PowerPoint PPT Presentation


  • 42 Views
  • Uploaded on
  • Presentation posted in: General

Sitzung 8: 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). Die Klasse Component.

Download Presentation

Sitzung 8: Zeichnen in Java

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Sitzung 8 zeichnen in java

Sitzung 8: Zeichnen in Java

Sitzung 8


Die klasse component

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 component1

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

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 komponenten1

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 komponenten2

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,

    • verwaltet die Zeichenfarbe und den Font in dem Textausgaben erfolgen sollen.

Zeichnen in Java


Zeichnen von awt komponenten3

Zeichnen von AWT - Komponenten

Component.repaint()

Component.getGraphics()

Component.update(Graphics g)

  • Standardmäßig: Löschen des Hintergrundes (mit background color)

  • Zeichnen des Komponenten-Inneren durch Aufruf der paint()-Methode

Zeichnen in Java


Zeichnen von awt komponenten4

Zeichnen von AWT - Komponenten

Component.repaint()

Component.getGraphics()

Component.update(Graphics g)

Component.paint(Graphics g)

  • Zeichnet „in“ das Graphics-Objekt

  • Wird zur Darstellung „eigener“ Komponenten überschrieben

Zeichnen in Java


Die klasse graphics

Die Klasse Graphics

  • Graphics kapselt alle Zeichen-Operationen

  • Die Klasse ist abstrakt

  • Zeichnet direkt in den Bildschirmspeicher

Zeichnen in Java


Die klasse graphics methoden

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

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 example1

Graphics - example

GISFrame(String s) {

...

// add components:

contentPane.add(new GISViewer());

....

}

Zeichnen in Java


Zeichnen von awt komponenten5

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

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


Koordinatentransformation1

u

y

v

x

u

v

Koordinatentransformation

  • Probleme:

  • unterschiedliche Orientierung

  • unterschiedliche Skalender beiden Koordinatensysteme

Zeichnen in Java


Arten von transformationen

Arten von Transformationen

Zeichnen in Java


Arten von transformationen1

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

Affine Transformationen

  • verbreitete Transformation zwischen allen Punkten einer Ebene

  • erfordert 6 Parameter (in 2D)

Zeichnen in Java


Affine transformationen1

Affine Transformationen

  • m00, m11: Streckungs-/Stauchungsfaktoren

  • m01, m10: Scherfaktoren

  • m02, m12: Translation (Verschiebung)

Zeichnen in Java


Transformationen in java graphics2d

Transformationen in JavaGraphics2D

  • 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

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


Beispiel transformationen

Beispiel Transformationen

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

}

Zeichnen in Java


Zu aufgabe 6

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, 17.07.2004

Zeichnen in Java


  • Login