Konrad-Adenauer-Gymnasium Langenfeld

Informatik Grundkurs Einführungsphase

Zeichnen auf dem Canvas

Zum Zeichnen verwenden wir eine eigene Methode Zeichnen() in unserer hhCanvas-Klasse. Hier ist sie erst einmal angegeben:

public void Zeichnen()
{
  int iHausbreite;
  int iHaushöhe;
  int iDachhöhe;
  int iHalbesHaus;

  iHausbreite=50;
  iHaushöhe=3*(int)(iHausbreite/2);
  iDachhöhe=(int)(iHausbreite/4);
  iHalbesHaus=(int)(iHausbreite/2);

  grGrafik.drawRect(100,100,iHausbreite,iHaushöhe);
  grGrafik.drawLine(100,100+iHaushöhe,100+iHausbreite,100);
  grGrafik.drawLine(100,100,100+iHausbreite,100+iHaushöhe);
  grGrafik.drawLine(100,100,100+iHalbesHaus,100-iDachhöhe);
  grGrafik.drawLine(100+iHalbesHaus,100-iDachhöhe,100+iHausbreite,100);
  repaint();
}

Zunächst definieren wir int-Variablen für die Breite und Höhe des Hauses, sowie die Höhe des Daches. Die Variable für das halbe Haus brauchen wir, damit wir das Dach zeichnen können.

Als Hausbreite legen wir 50 (Pixel) fest. Die Höhe berechnen wir mit dem 3/2-fachen der Breite. Allerdings würde die Rechnung einen double-Wert (eine Dezimalzahl) ergeben. Durch das sog. Typecasting wird dieser Wert in int umgerechnet (die Nachkommastellen werden abgeschnitten).

Typecasting

Mit

VarTyp1 = (Typ1)VarTyp2;

wird ein Typecasting in Java durchgeführt, sofern dies zwischen den Typen möglich ist. Die Variable vom Typ2 wird in den Typ 1 umgewandelt.

Analog werden die beiden anderen Werte über Typecasting berechnet.

Nun wird das Haus gezeichnet. Dazu wird der von uns definierte Graphics-Kontext grGrafik verwendet. Die Befehle sind Grafikbefehle aus der Klasse Graphics.

Zuerst wird der Kasten des Hauses gezeichnet, dann die beiden Diagonalen und zum Schluss die beiden Seiten des Daches.

Aufruf in Hexenhaus.java

In unserem Hauptmodul muss die Methode hhCanvas.Zeichnen() nun aufgerufen werden. Und zwar dann, wenn wenn wir den Button btZeichnen drücken.

Also müssen wir als Reaktion in actionPerformed() den Aufruf hineinsetzen:

if (cmd == btZeichnen)
{
  cvZeichnung.Zeichnen();
}

Dabei verwenden wir natürlich unsere hhCanvas-Instanz cvZeichnung.



© Ralph-Erich Hildebrandt, 06. Januar 2004