You are on page 1of 14

Dessiner

• Utiliser la classe java.awt.Graphics qui contient les
méthodes de dessin.
• La classe Graphics doit être importé pour être connue.
• Dans une applette il suffit de redéfinir la méthode
paint()

import java.awt.Graphics;

public class Figure extends java.applet.Applet {
public void paint(Graphics g) {
...
}
}

© 1996 - G. Falquet - Université de Genève 1

Université de Genève 2 .Size().0) le coin gauche supérieur.hight.0 +X 60. 60 +Y size() donne la dimension de la feuille. (0. (Size().hight) le coin gauche inférieur .width) le coin droite inférieur © 1996 .Size(). Falquet .Component un contexte graph- ique de type Graphics qui est la feuille de dessin. Système de coordonnées entières 0.width) le coin droite supérieur . (0.awt.G. Feuille de dessin Applet hérite de java. (0. de type Dimension . .Size(). 20 20.

drawLine(x.25. x < size().cos(x/10)+1) * size().25). Falquet . (int)f(x + 1)). • Pour dessiner une ligne. x++) { g.width . public void paint(Graphics g) { g.Applet { double f(double x) { return (Math. il faut spécifier le point de départ de la ligne et son point d’arrivée. } import java.G. } } } © 1996 .drawLine(50. Dessiner une ligne • Par défaut la feuille est remplie avec une couleur de fond (background) • On dessine avec la couleur sélectionnée (par défaut le noir). public class Figure extends java.height / 2.100.Graphics.applet.Université de Genève 3 . } public void paint(Graphics g) { for (int x = 0 . (int)f(x).awt. x + 1.

fillRect(80.fillRoundRect(80.G. il faut alors ajouter deux paramètres: .20.drawRoundRect(50. false: le rectangle est en relief . g.20.30. (int) arrondiX: largeur de l’arrondi en x .70. Falquet .draw3DRect(50.20.drawRect(50.30).30).110.20.30.15).20).Université de Genève 4 . } Rectangles en relief Un paramètre supplémentaire booléen indique: .30.30.30. } © 1996 .20.fill3DRect(80.false). g.15.30.15.110.20.true). Dessiner des rectangles public void paint(Graphics g) { g. true: le rectangle est en creux public void paint(Graphics g) { g. (int) arrondiY: hauteur de l’arrondi en y public void paint(Graphics g) { g.70. } Rectangles aux coins arrondis. g.

g. } © 1996 .210}. g.drawPolygon(listeX.55}. int nbrXY=listeX.100. public void paint(Graphics g) { int listeX[]={50. Spécifier le nombre de points à dessiner.80. nbrXY).170.Université de Genève 5 .200. int listeY2[]={200. Dessine deux polygones. Polygones Spécifiés par deux tableaux: coordonnées en x et coordon- nées en y.length.160}. nbrXY).250. listeY.170.fillPolygon(listeX.220. listeY2. Le polygone n’est pas automatiquement fermé.G.40. Falquet . int listeY[]={150.220.

-150). g. Dessine deux ovales. .30. Cercles.drawOval(120.180).fillArc(150.20.30). g.drawArc(120.G. largeur et hauteur.Université de Genève 6 . où doit commencer l’arc (en degré). public void paint(Graphics g) { g.70.fillOval(150. public void paint(Graphics g) { g.30.45. } © 1996 .30).30.70. } Pour dessiner des arcs Deux paramètres: .30. ovales. sur combien de degrés on doit le dessiner. arcs Les formes ovales sont inscrites dans un rectangle => paramètres : x.45.20. Falquet . Cercles => la hauteur doit égaler la largeur. y.30.30.

y. ny) g. © 1996 . Falquet . ny). hauteur). largeur.copyArea(x. largeur. copier Effacer une zone rectangulaire g.clearRect (x.Université de Genève 7 .G. hauteur. nx. Gommer. y. Copier une zone rectangulaire nouvelle coordonnée (nx.

darkGray. or- ange. • couleurs prédéfinies: white.G. B) valeurs de R. Falquet . yellow. magenta. gray. par exemple: Color bleuPale= new Color(0. blue. cyan. green. • le nombre de couleurs effectivement affichées dépend des possibilités du butineur et de l’écran. black.0. vert. pink. • définir des nouvelles couleurs et étendre la palette avec la méthode Color(R. => 256 x 256 x 256 = environ 16 millions de possiblités.0).Université de Genève 8 . © 1996 . V et G com- prises entre 0 et 255 (ou éventuellement entre 0. red. lightGray. V. bleu).80). • modèle de couleur sur 24 bits. 8 pour chaque couleur fondamentale (rouge.0 et 1. Couleurs • classe Color pour définir et manipuler les couleurs.

white) récupérer la couleur du fond.Université de Genève 9 .G. Falquet . getBackground() imposer une couleur à tous les points déjà dessinés setForeground(Color) setForeground(Color. Colorier Méthodes héritées par Applet de la classe Component définir la couleur de l’arrière plan setBackground(Color) setBackground(Color.pink)// redessine tout // en rose Méthode de Graphics redéfinir la couleur courante avec laquelle on dessine setColor(Color) obtenir la couleur courante getColor() © 1996 .

60). • La couleur courante est aussi celle qui est utilisée pour écrire les caractères. 30).setColor(Color. Écrire • La méthode drawString(String.setColor(Color.white).Applet { public void paint(Graphics g) { g.red).black). g. } } © 1996 . 50.awt.blue).Graphics.drawString("Fraternité".ap- plet. 50.Color.drawString("Mon premier applet politisé!". g. Falquet . g. public class ApplettePolitique extends java.setColor(Color.awt. 120). import java. g.setColor(Color.G. import java.Université de Genève 10 . 50. g.drawString("Liberté".y. g. g. int. 90). 50.drawString("Egalité". int) permet de dess- iner une chaîne de caractères à partir d’une coordonnée x.

Font. .Université de Genève 11 .G. Falquet . getSize().BOLD (gras). Les polices de caractères Pour construire une police.PLAIN (normal). Pour définir la police courante de caractères utiliées: Graphics.la taille des caractères: La taille est donnée en points. Font.le nom de la police: Helvetica. get- Style(). isPlain(). isItalic() © 1996 .le style de caractères: trois constantes sont à disposition: Font. TimesRoman. Il est possible de spécifier plusieurs styles simultanément en les additionnant. .ITAL- IC (italique).setFont() Pour interroger un objet Font: getName(). isBold(). Courier sont des types de caractères existant pour tous les bu- tineurs. il faut instancier un objet de la classe Font et l’initiliaser avec les paramètres suivant: .

ITALIC. g.setColor(Color.drawString("Le même avec emphase!". public class InterPol extends java. g.Font.drawString("Liberté".drawString("Fraternité".14). g. 60). g.Font.Applet { public void paint(Graphics g) { Font helvetica14Normal = new Font("Helvetica".Color. Font timesRoman18Italic = new Font("TimesRoman".ITALIC+Font.Font. Exemple multi-polices import java. g. g. 50. 30).awt. Font courier12Gras = new Font("Courier". g.setFont(helvetica14Normal). 120).BOLD. g.setFont(courier12Gras). g. 50.setColor(Color. 90). g.18).setFont(timesRoman18ItalicGras).Université de Genève 12 . } } © 1996 . g.Graphics. 50.awt. Font timesRoman18ItalicGras = new Font ("TimesRoman".white).PLAIN.18).12).setColor(Color.applet.setColor(Color.Font.drawString("Egalité".red). import java.G.awt.BOLD.black).blue). import java.Font.setFont(timesRoman18Italic). 50. Falquet . g.

FontMetrics m = getFontMetrics(g. Un objet de FontMetrics est créé à partir d’un objet Font p. Falquet . © 1996 .getFont()).awt. la classe java.FontMetrics donne des informations sur la taille occupée par une chaine de caractères. Quelques méthodes stringWidth() largeur d’une chaîne de caractères donnée charWidth() largeur d’un caractère donné getAscent() hauteur de la police au dessus de la ligne de base getDescent() hauteur de la police en dessous de la ligne de base getLeading() espace entre les lignes getHeight() hauteur total de la police Toutes ces méthodes travaillent en points.Université de Genève 13 .ex. Mesures des fontes Pour effectuer du travail plus précis et plus simple sur la justification des caractères.G.

metriqueCourante.G.setFont(helvetica18Normal).18). String s. (size(). g.width .setColor(Color.applet. writeCenter(g. 120).getFont()). public class Centrage extends java. writeCenter(g. 60). g.drawString(s.awt.*. int y){ FontMetrics metriqueCourante = getFontMetrics(g. writeCenter(g. public void writeCenter(Graphics g. "Le même avec emphase au centre!". "Egalité".Font.Applet { Font helvetica18Normal = new Font("Helvetica".PLAIN. y). 30). Exemple: centrage import java. writeCenter(g. "Liberté". Falquet . } } © 1996 . 90). "Fraternité". } public void paint(Graphics g) { g.Université de Genève 14 .stringWidth(s)) /2.blue).