Classe Graphics, principales méthodes
Si g désigne un objet Graphics, on dessine sur g en appelant g.methode_de_Graphics(parametres).
Méthodes effectuant des tracés géométriques
Ces méthodes prennent en règle général au moins 4 paramètres entiers int décrivant le rectangle dans lequel s'inscrira le tracé : x, y, width, height.
Par défaut l'origine du système de coordonnées est en haut à gauche (peut être changé par translate). Les axes sont orientés vers la droite et le bas respectivement.
Par exemple
g.fillRect(50,70,150,100); dessine sur le Graphics g un rectangle plein dont le coin supérieur gauche est à 50 pixel du bord gauche de g et 70 pixels du haut, de largeur 150, de hauteur 100.
Dans le cas des formes fermées les méthodes existent sous deux formes : une qui trace un contour (méthodes commençant par draw), une qui remplit le tracé (méthodes commençant par fill).
- drawLine(int x1, int y1, int x2, int y2)
Dessine une ligne entre les points (x1, y1) et (x2, y2)
- drawRect(int x, int y, int width, int height)
fillRect(int x, int y, int width, int height)
Dessinent un rectangle vide ou plein.
- void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Dessinent un rectangle vide ou plein aux coins arrondis.
- draw3DRect(int x, int y, int width, int height, boolean raised)
fill3DRect(int x, int y, int width, int height, boolean raised)
Dessinent un rectangle (vide ou plein) avec une bordure "3D"
- drawOval(int x, int y, int width, int height)
fillOval(int x, int y, int width, int height)
Dessinent une ellipse (ou un cercle si height=width) vide ou plein
- drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
Dessinent un arc d'ellipse (vide ou plein). startAngle est l'angle départ mesuré par-rapport à l'horizontale, arcAngle est l'angle couvert par le tracé. Les angles sont en degrés, mesurés dans le sens trigonométrique.
Le centre de l'ellipse est au centre du rectangle de coin supérieur gauche (x,y) et de dimensions (width, height).
- copyArea(int x, int y, int width, int height, int dx, int dy)
Recopie le contenu du rectangle de coin supérieur gauche (x,y) et de dimensions (width,height) en le décalant de dx et dy.
Les méthodes qui suivent effectuent des tracés reliant un nombre quelconque de points. Ils prennent comme paramètres deux tableaux d'entiers de même dimension dont l'un contient les abscisses des points et l'autre leurs ordonnées. Le troisième paramètre nPoints indique le nombre de points effectivement utilisés pour le tracé. Il doit être inférieur ou égal au nombre de coordonnées sinon une erreur est déclenchée à l'exécution.
Exemple 1
g.fillPolygon(new int[]{50,70,100,50,60,20},new int[]{100,50,60,20,20,50},6);
Les tableaux sont ici créés et initialisés dans l'appel de méthode lui-même (pratique quand il n'y a pas beaucoup de points et qu'on sait où ils vont être)
Exemple 2
int[] xcoord=new int[100];
int[] ycoord=new int[100];
//....
// (lignes de code permettant de remplir les tableaux avec les valeurs adéquates)
//...
g.drawPolyline(xcoord,ycoord,100);
Les tableaux sont ici déclarés, puis remplis préalablement, généralement à l'aide de boucles for. C'est la méthode à privilégier quand il y a beaucoup de points et qu'on doit calculer leurs coordonnées à l'aide de leurs expressions mathématiques. Attention au format : les expressions mathématiques donneront généralement des nombres en virgule flottante, penser à transtyper les valeurs en int avec
(int) au moment de les écrire dans les tableaux.
- drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
Dessinent un polygone fermé (vide ou plein) en suivant les nPoints points dont les coordonnées sont contenues dans les tableaux xPoints et yPoints de dimension supérieure ou égale à nPoints.
- drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
Dessine une ligne en suivant les nPoints points dont les coordonnées sont contenues dans les tableaux xPoints et yPoints de dimension supérieure ou égale à nPoints.
Méthodes permettant d'afficher du texte
- drawString(String str, int x, int y)
Ecrit la chaîne de caractères en partant de (x,y). Attention c'est le point en bas à gauche du premier caractère qui se trouve en x,y. Le texte s'écrit donc à droite de l'abscisse x et au-dessus de l'ordonnée y.
- setFont(Font font)
Fixe la police de caractère en utilisant la classe Font
Exemple : g.setFont(new Font(Font.SANS_SERIF,Font.ITALIC,16))
- getFontMetrics()
Permet notamment d'obtenir la dimension du rectangle occupé par une chaîne de caractères avec la police courante.
g.getFontMetrics().stringWidth(ma_chaine) renvoie dans un type int la longueur occupée par la chaîne de caractères ma_chaine et
g.getFontMetrics().getHeight()) renvoie dans un int la hauteur occupée par une ligne de texte.
Méthodes affectant les propriétés générales de tracé
-
abstract void setColor(Color c)
Fixe la couleur de dessin. Le paramètre c doit être de type Color : voir l'aide de cette classe.. Par exemple
g.setColor(Color.YELLOW) utilise une des constantes définie dans la classe Color, qui sont
black | blue | cyan | darkGray | gray | green | lightGray | magenta | orange | pink | red | white | yellow |
BLACK | BLUE | CYAN | DARK_GRAY | GRAY | GREEN | LIGHT_GRAY | MAGENTA | ORANGE | PINK | RED | WHITE | YELLOW |
Autre exemple : g.setColor(new Color(150,100,30)) permet d'obtenir la couleur de tracé dont les valeurs RVB sont 150,100 et 30 respectivement.
- setPaintMode()
Mode de dessin standard: le dessin recouvre l'arrière-plan.
- setXORMode(Color c_alt)
Mode de dessin XOR : la couleur de dessin est le résultat d'un ou-exclusif entre la couleur courante définie par setColor et la couleur c_alt. Cela revient à masquer la couleur c_alt dans la couleur courante. En mode XOR redessiner quelque chose au même endroit revient à l'effacer en restituant l'arrière-plan.
- translate(int dx, int dy)
Décale l'origine des axes de dx horizontalement vers la droite et dy verticalement vers le bas (dx et dy pouvant être positifs ou négatifs). Permet par exemple d'afficher ensuite des points de coordonnées négatives.
- setClip(int x, int y, int width, int height)
Définit une zone de dessin restreinte délimitée par le rectangle de coin supérieur droit (x,y) et de dimensions (width, height). Tout ce qui dépasse de cette zone ne sera pas dessiné. L'application de setClip ne change pas l'origine des coordonnées.