Skip to content

Olympische Flagge – Grafikprogrammierung Tutorial

von Simon Michel am 28.08.2010

1287078593_source_java

Wer kennt sie nicht, die Olympischen Spiele. Alle vier Jahre treffen sich die Hochleistungssportler um sich einander zu messen. Wie schön wäre es doch, die Olympische Flagge einmal in Java zu “malen”. Wie das geht, wird jetzt gezeigt.

  1. Neues Projekt erstellen: de.michel.graphic.olympia
  2. Paket erstellen: olympia
  3. Kreis.java erstellen
  4. Rechteck.java erstellen
  5. Text.java erstellen
  6. Olympia.java erstellen
  7. OlympiaFlagge.java erstellen

Quellcode

Zum Erstellen der Olympischen Flagge benötigen wir in erster Linie die Kreise. Um das ganze etwas aufwändiger zu gestalten wird zusätzlich ein Rahmen um die Flagge gezogen. Ein Bezeichner darf natürlich auch nicht fehlen.

Kreis.java

Fünf Ringe werden benötigt, aber nur eine Klasse. Die Funktion drawOval() zeichnet die Ringe in beliebiger Größe.

package olympia;

import java.awt.Graphics;

public class Kreis {

	private int x;
	private int y;
	private int r;

	/**
	 * @param x Koordinate
	 * @param y Koordinate
	 * @param r Radius
	 */
	public Kreis(int x, int y, int r) {
		this.x = x;
		this.y = y;
		this.r = r;
	}

	public void zeichnen(Graphics painter) {
		// drawOval(x, y, width, height)
		painter.drawOval(x - r, y - r, 2 * r, 2 * r);
		painter.drawOval(x - r + 1, y - r + 1, 2 * (r - 1), 2 * (r - 1));
	}
}

Rechteck.java

Um die Flagge nicht frei in der Luft schweben zu lassen, ziehen wir einen Rahmen. Hierzu hilft die Funktion drawRect().

package olympia;

import java.awt.Graphics;

public class Rechteck{

	private int x;
	private int y;
	private int width;
	private int height;

	/**
	 * @param x Koordinate
	 * @param y Koordinate
	 * @param width Breite
	 * @param height Höhe
	 */
	public Rechteck(int x, int y, int width, int height)
	{
		this.x = x;
		this.y = y;
		this.width = width;
		this.height = height;
	}

	public void zeichnen(Graphics pinsel)
	{
		// drawRect(x, y, width, height)
		pinsel.drawRect(x - width / 2, y - height / 2, width, height);
		pinsel.drawRect(x + 1 - width / 2, y + 1 - height / 2, width, height);
	}
}

Text.java

Die Methode drawString() zeichnet den olympischen Text.

package olympia;

import java.awt.FontMetrics;

import java.awt.Graphics;

public class Text {

	private int x;

	private int y;

	private String text;

	/**

	 * @param x Koordinate

	 * @param y Koordinate

	 * @param text Text

	 */

	public Text(int x, int y, String text) {

		this.x = x;

		this.y = y;

		this.text = text;

	}

	public void zeichnen(Graphics painter) {

		FontMetrics metrics = painter.getFontMetrics();

		int length = metrics.stringWidth(text);

		painter.drawString(text, x - length / 2, y);

		painter.drawString(text, x - length / 2 + 1, y);

	}

}

Olympia.java

Die Olympia Klasse zeichnet die Flagge mit Hilfe der zuvor erstellten Klassen.

package olympia;

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import javax.swing.JComponent;

public class Olympia extends JComponent {

	/**
	 * Die Funktion paint() erstellt die Olympische
	 * Flagge mit Hilfe der Basisklassen Kreis, Rechteck und Text
	 */
	public void paint(Graphics painter) {

		// Die Farbe der Zeichnungen wählen (hier: schwarz)
		painter.setColor(new Color(0, 0, 0));

		// Rechteck erzeugen
		Rechteck r1 = new Rechteck(165, 110, 310, 200);
		r1.zeichnen(painter);

		// Kreise mit den entsprechenden Koordinaten erzeugen
		// sowie dem Radiuswert von 45
		Kreis k1 = new Kreis(65, 65, 45);
		k1.zeichnen(painter);
		Kreis k2 = new Kreis(165, 65, 45);
		k2.zeichnen(painter);
		Kreis k3 = new Kreis(265, 65, 45);
		k3.zeichnen(painter);
		Kreis k4 = new Kreis(115, 110, 45);
		k4.zeichnen(painter);
		Kreis k5 = new Kreis(215, 110, 45);
		k5.zeichnen(painter);

		// Schrift erzeugen
		painter.setFont(new Font("Courier New", Font.BOLD, 20));
		Text t1 = new Text(165, 200, "Olympia");
		t1.zeichnen(painter);
	}
}

OlympiaFlagge.java

Damit die Zeichnungen auch auf einer Oberfläche zu sehen ist, wird die Klasse OlympiaFlagge.java benötigt.

package olympia;

import javax.swing.JFrame;

public class OlympiaFlagge extends JFrame {

	public OlympiaFlagge() {

		// eine neue Olympia Flagge hinzufügen
		add(new Olympia());
		setTitle("Olympische Flagge");
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setSize(340, 250);
		setLocation(100, 100);
		setVisible(true);
	}

	public static void main(String[] args) {
		new OlympiaFlagge();
	}

}

Ergebnis

Olympische Flagge

Gefällt der Blogeintrag?

Dann empfehle itblogging.de weiter und abonniere den RSS Feed.
   

Von → Java

2 Kommentare
  1. Find ich Klasse was du so programierst.

    Übrigends schöne und schlanke Homepage.

    Grüße

  2. Simon Permalink

    Vielen Dank. Das hört man doch immer gerne.
    Werde mir natürlich auch in Zukunft alle Mühe geben das Niveau zu halten.
    Grüße

Einen Kommentar hinterlassen

Beachte: XHTML ist erlaubt. Ihre E-Mail-Adresse wird nie angezeigt.

Abonniere diese Seite via RSS