Zum Inhalt springen

Java Micro: Canvas

Aus Wikibooks

< Java Micro

In diesem Kapitel geht es um die Anwendung der Low-Level-API in Form des Canvas. Mit Hilfe des Canvas ist es möglich geometrische Formen auf dem Bildschirm anzuzeigen. Um Es zu nutzen ist es nötig eine Klasse zu erstellen die von der Klasse Canvas mit der Methode protected abstract void paint(Graphics g) ableitet.

Hier ein Beispiel für eine solche Klasse:

import javax.microedition.lcdui.*;
class CanvasBeispiel extends Canvas {
   public void paint (Graphics g) {
   g.setGrayScale (255); // ändert die Farbe mit der gezeichnet wird
   g.drawLine (0, 0, getWidth(), getHeight()); // zieht eine Diagonale von links-oben nach rechts-unten
   }
}

Diese Funktion zeichnet eine schwarze Linie quer über den Bildschirm. Mit der Methode setGrayScale(int color) wird die Farbe festgelegt. Erlaubt sind dafür Zahlen aus dem Bereich 0 (schwarz) - 255 (weiss). Alternativ gibt es auch die Möglichkeit die Methode setColor(int rot, int grün, int blau) zu benutzen der Unterschied zu setGrayScale(int color) ist das es eine weitaus grössere Farbauswahl bietet.

setColor (255, 0, 0);

Ist z.B. Rot.

setColor (0,0,128);

Oder dies dunkelblau. Das heißt also, umso geringer die Zahl für den jeweiligen Farbanteil(rot,grün,blau) desto dunkler die Farbe.

setColor (255, 255, 255);

Und das ist Weiss.

Die Funktion g.drawLine(int x1,int y1,int x2, int y2)zeichnet eine Linie zwischen zwei Punkten. Dabei ist zu beachten das der Koordinatenursprung also (0,0) sich links-oben befindet und der zweite Punkt relativ zum ersten angegeben werden muss. Erklärt an folgendem Beispiel:

drawLine(getWidth()/2, getHeight()/2,getWidth()/2, getHeight()/2);

wobei getHeight() die Höhe und getWidth() die Breite des BIldschrims angibt. Diese Funktion malt nicht wie vielleicht fälschlich angenommen einen Punkt in der Mitte des Bildschirms sondern zieht einen Strich von der Mitte nach Rechts unten. Also um die hälfte der Höhe nach rechts und um die hälfte der Breite nach links.

Um nun ein Canvas auf dem Bildschirm anzeigen zu können muss man es im MiDlet als Display setzen. Jede Klasse die von Canvas ableitet ist ein Displayable!

Das minimal Midlet um dieses obige Canvas(CanvasBeispiel) anzuzeigen ist folgendes:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class Beispiel extends MIDlet {
   public void startApp () {
     Display.getDisplay (this).setCurrent (new CanvasBeispiel ()); 
   }
   public void pauseApp () {}
   public void destroyApp (boolean forced) {}
}

mit Hilfe der Zeile:

Display.getDisplay (this).setCurrent (new CanvasBeispiel ());

erstellt unser Programm ein Objekt der Klasse CanvasBeispiel() und setzt es als Display.