Vorlesung Informatik 1 - Teil A: Java Kurs
1.14 Einfache Grafik
Jedes JPanel Objekt hat eine Fläche, auf der man zeichnen kann, als läge eine Glasplatte über dem Panel.
Die Zeichenfläche ist ein Objekt vom Typ Graphics2D. Um zu zeichnen, überschreibt man üblicherweise die
Methode paintComponent, welche das Graphics2D Objekt als Parameter bekommt.
In unserer StandardAnwendung-Klasse wird diese Methode schon überschrieben, sie ruft wiederum die Methode zeichne.
Deshalb überschreiben wir die Methode zeichne, wenn wir Grafik machen wollen:
@Override
public void zeichne(Graphics2D g){
g.setColor(Color.RED);
g.fillOval(30,40,70,70); // Kreis mit 70px Durchmesser an Position (30,40)
...
Die Zeichenfläche ist so groß wie das Panel: this.getWidth() und this.getHeight().
----------------------------------> x
|
| Koordinatenursprung ist die linke
obere Ecke, x nach Rechts, y nach Unten.
| Längen werden in Pixeln (px)
gemessen.
| 0 ≤ x ≤ getWidth()
0 ≤ y ≤ getHeight()
|
V
y
Einige Methoden von Graphics2D:
setColor(farbe: Color): void
setzt Farbe für alle nachfolgenden
Operationen
setStroke(st: Stroke):
void
setzt Strich-Stärke für folgende draw-Oparationen (z.B. setStroke(new BasicStroke(4));
für 4px Striche
drawLine(x1,
y1, x2, y2: int)
zeichet Linie von (x1,
y1) nach x2,y2)
drawString(text: String, x,y:
int): void zeichnet Text an Position (x,y) (mit
setFont ggf. orher Schriftart setzen)
fillOval(x,y,b,h: int):
void
füllt eine Ellipse aus. (x,y): linke obere Ecke, b,h: Breite,
Höhe
drawOval(x,y,b,h: int):void
zeichnet Umrandung einer
Ellipse
fillRect, drawRect(x,y,b,h:
int): void füllt bzw. zeichnet
Rechteck (x,y): linke obere Ecke, b,h: Breite,
Höhe
translate(dx,dy: int): void
verschiebt alle folgenden Zeichenoperatione um
dx,dy
weitere Methoden für draw/fillRoundRectangle, drawFillArc, draw/fill3DRect
Für allgemeine Formen:
Polygon p = new
Polygon(); //
java.awt.Polygon
p.addPoint(4,5);
p.addPoint(7,9);
kann
dann mit drawPolygon oder fillPolygon gezeichnet
werden.
Achtung: new Polygon() nicht in der Methode zeichne rufen, um Performance-Probleme zu vermeiden.
Später lernen wir weitere Methoden kennen, die auch gebrochene Zahlen als Koordinaten zulassen.