sitzung 8 zeichnen in java n.
Download
Skip this Video
Download Presentation
Sitzung 8: Zeichnen in Java

Loading in 2 Seconds...

play fullscreen
1 / 23

Sitzung 8: Zeichnen in Java - PowerPoint PPT Presentation


  • 65 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Sitzung 8: Zeichnen in Java' - henrik


Download Now 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
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 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