Dessiner avec Java

Tout affichage (texte ou dessin) se fait en utilisant la classe Graphics qui fournit de nombreuses méthodes.

La classe Graphics

Le constructeur de la classe Graphics est déclaré protected. On ne peut donc pas créer directement des variables de type Graphics; on les obtient avec des méthodes spécifiques comme getGraphics dans la classe Component ou comme paramètre de la méthode paint.

Couleurs et fontes

Lorsqu'on utilise le paramètre de type Graphics fourni par la méthode paint, le composant lui attribue une couleur de dessin (définie par setForeground) et une fonte par défaut (définie par setFont). Ces valeurs peuvent être modifiées par des méthodes de la classe Graphics.
 - setColor(Color) permet de fixer une nouvelle couleur de dessin
 - setFont(Font) permet de choisir une nouvelle fonte.
D'autre part, on peut obtenir une variable de type FontMetrics correspondant à la fonte en cours en utilisant la méthode getFontMetrics().
L'affichage de texte se fait avec la méthode drawString(String, int, int) déjà rencontrée.

Dessin et remplissage de formes

La classe Graphics permet de dessiner et de remplir des figures ayant des formes élémentaires. La méthode de dessin est préfixée par "draw", la méthode de remplissage est préfixée par "fill".

Ce petit tour d'horizon n'épuise pas toutes les possibilités offertes par la classe Graphics.

Un exemple

Nous allons dessiner un petit paysage (prairie, ciel, maison, soleil) dans un rectangle de 300 pixels sur 200.

Il suffira d'écrire la méthode paint de l'applet. Tout est une affaire de coordonnées.

Ciel et prairie

On remplit deux rectangles en bleu et en vert.

	//ciel
	g.setColor(Color.blue);
	g.fillRect(0,0,300,110);
	//prairie
	g.setColor(Color.green);
	g.fillRect(0,110,300,90);

Le soleil

On se contentera d'un cercle jaune.

	//soleil
	g.setColor(Color.yellow);
	g.fillOval(220,20,30,30);

Mur de la maison et porte

Un rectangle blanc, un contour en noir et quelques traits pour la porte.

	//mur de la maison
	g.setColor(Color.white);
	g.fillRect(80,100,50,70);
	g.setColor(Color.black);
	g.drawRect(80,100,50,70);
	//porte
	g.drawRect(90,140,20,30);
	g.drawLine(110,155,105,155);

Toit de la maison

On se contentera d'un triangle rouge.

	//toit en triangle
	int[] x={80,130,105};
	int[] y={100,100,50};
	g.setColor(Color.red);
	g.fillPolygon(x,y,3);
	g.setColor(Color.black);
	g.drawPolygon(x,y,3);

Résultat



Retour au menu