Aufgaben
Aufgabe 1:
Schreiben Sie eine Kindklasse von JFrame, die mit der Methode public void paint(Graphics g) folgende geometrische Figuren vom Typ Shape am Bildschirm zeichnet (Methode draw()):
- Rechteck mit Mittelpunkt (100,100) und Kantenlänge 50,
- Kreis mit Mittelpunkt (120,130) und Radius 25,
- Bogen mit Mittelpunkt (200,200), Radius 50, Startwinkel 90° und Winkeldifferenz 45° mit den Varianten, OPEN, CHORD und PIE!
Legen Sie alle geometrischen Figuren als Elemente eines Feldes vom Typ Shape an!
Aufgabe 2:
Verwenden Sie die Programmvorlage aus Aufgabe 1, um die dort angegebenen geometrischen Figuren zu füllen. Beobachten Sie dabei folgende Effekte:
- Was ist beim Füllen der Kreisbögen zu beobachten?
- Verwenden Sie für die verschiedenen Figuren unterschiedliche Farben (Rot, Grün, Blau, Gelb, Magenta, Cyan)! Tauschen Sie die Reihenfolge der Figuren aus und beobachten Sie den Effekt!
- Wiederholen Sie den letzten Versuch mit transparenten Farben.
Aufgabe 3:
Konstruieren Sie die untenstehende Figur als Path2D-Objekt und zeichnen Sie diese auf dem Monitor aus! Beachten Sie dabei die angegebene Reihenfolge! Die Figur hat die Abmessungen 100 hoch und 100 breit.
- Testen Sie dabei für die Bögen die Kurvenvarianten Kreisbogen sowie quadratische und kubische Bézier-Kurven aus!
- Welchen Effekt können Sie beobachten, wenn Sie diese zusammengesetzte Figur füllen?
Aufgabe 4:
Erstellen Sie einen graphischen Frame, in dem Sie mehrere Punkte darstellen! Verwenden Sie dazu die Klasse Point2D ! Beachten Sie dabei folgende Hinweis:
- Das Auszeichnen der Punkte erfolgt in der Methode void paint(Graphics g).
- Punkte implementieren nicht das Interface Shape , das zum Auszeichnen primitiver Graphiken erforderlich ist. Verwenden Sie dazu ein Objekt vom Typ Shape als Ersatzsymbol (z.B. Kreise, Rechtecke oder andere Figuren). Wie kann dies bei der Implementierung realisiert werden?
Aufgabe 5:
Schreiben Sie eine Klasse Symbol, die Shape implementiert, und mit der Sie u.a. die Graphiksymbole der unteren Abbildung erzeugen können!
- Über welche Attribute und über welche Methoden muss diese Klasse verfügen?
- Überlegen Sie, wie Sie Symbole dynamisch, d.h., erst zur Laufzeit des Programms konstruieren können!
Aufgabe 6:
Überlegen Sie, welche Liniensignaturen aus der unteren Abbildung mit der Klasse BasicStroke generiert werden können. Entwerfen (nicht Implementieren!) Sie eine Klasse LineSignature, die das Interface Stroke implementiert, und mit der Sie die übrigen Liniensignaturen aus der unteren Abbildung erzeugen können!
- Über welche Attribute und über welche Methoden muss diese Klasse verfügen?
Anmerkung: Zum Interface Stroke gibt es nur die Methode Shape createStrokedShape(Shape p), die aus der gegebenen Liniengeometrie p die Umringlinie der Liniensignatur erzeugt.