12.1.1 | Zeichnen mit Java 2D |
Im Prinzip erfolgt das Zeichnen von Objekten mit Java 2D ebenso wie zuvor. Der einzige Unterschied besteht darin, dass der Programmierer mehr Möglichkeiten zur Verfügung hat, Objekte zu zeichnen. Diese neuen Möglichkeiten werden von der Klasse Graphics2D bereitgestellt.
Graphics2D ist selbst von der Klasse Graphics abgeleitet. Dadurch kann man in einem Exemplar der Klasse Graphics2D auch auf alle Methoden der Klasse Graphics zugreifen.
Um abwärtskompatibel zu bleiben, ist der Parametertyp von paint() nach wie vor Graphics. Ab JDK 1.2 wird hier jedoch ein Exemplar der Klasse Graphics2D übergeben. Dadurch, dass Graphics2D von Graphics abgeleitet ist, können Exemplare von Graphics2D durch Polymorphie auch als Exemplare von Graphics behandelt werden.
Um die erweiterten Funktionen der Klasse Graphics2D zu nutzen, ist es erforderlich, in der paint()-Methode das übergebene Graphics-Exemplar mit einem Cast-Konstrukt in die Klasse Graphics2D umwandeln:public void paint(Graphics g) { Graphics2D g2 = (Graphics2D)g; // hier Zeichenoperationen auf // g2 anwenden // ... }An einem Grafikkontext in Java 2D können folgende Einstellungen vorgenommen werden:Die Vorgehensweise bei der Verwendung von Graphics2D erfolgt analog zu Graphics: Zunächst werden Einstellungen am Graphics2D-Exemplar vorgenommen. Danach werden Grafikobjekte über Zeichenmethoden von Graphics2D dargestellt (gerendert). Beim Zeichnen von Grafikobjekten werden jeweils die zuletzt gemachten Einstellungen des Grafikkontexts verwendet.
- Der Linienzug, mit dem Umrandungen gezeichnet werden, kann in Breite und Muster (gestrichelt) variiert werden (bei JDK 1.1 nur durchgezogener Linienzug).
- Die Methode, wie Linien an den Ecken zusammengefügt werden, z. B. runde Ecken oder kantig (bei JDK 1.1 nur kantige Ecken).
- Ein beliebiger Clipping-Bereich (war bei JDK 1.1 nur in Form eines Rechtecks möglich).
- Transformationen wie z. B. Verschiebung, Rotation, Skalierung oder Scherung (nur Translation bei JDK 1.1).
- Farben oder Muster, mit denen Objekte gefüllt werden (bei JDK 1.1 nur Farben).
- Die Methode, die definiert, wie die Farben von überlappende Grafikobjekten zusammengeführt werden (bei JDK 1.1 nur deckend oder XOR möglich).