Extrait du cours interface Graphique en Java 1.6 Dessin
Le contexte graphique
● pour dessiner en Swing, il faut utiliser un contexte graphique
● un objet Graphics permet de:
– dessiner dans le composant concerné (JComponent ou Image)
– définir la couleurcourante: set/getColor()
– définir la fontecourante: set/getFont()
– gérer unetranslation:
translate(int x,int y)
Les primitives de dessin
● chacune des méthodes suivantes utilise l’état courant:
– drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
– drawImage(Image img, int x, int y, ImageObserver observer)
– drawLine(int x1, int y1, int x2, int y2)
– drawOval(int x, int y, int width, int height)
– drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
– drawRect(int x, int y, int width, int height)
– drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Les primitives de dessin
● et puis aussi:
– drawString(String str, int x, int y)
– fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
– fillOval(int x, int y, int width, int height)
– fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
– fillRect(int x, int y, int width, int height)
– fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
● et bien d’autres encore!
Récupérer un contexte
● 1 façon implicite:
– récupérer le Graphics passé à la méthode paintComponent d’un JComponent
● 2 façons explicites:
– récupérer le Graphics d’un composant ou d’une image avec getGraphics()
– obtenir unecopied’un Graphics existant avec createGraphics()
Comment dessiner
● avec paintComponent: on dessine itérativement, en changeant les paramètres du Graphics si nécessaire
public class Pacman extends JComponent {
@Override protected void paintComponent(Graphics g) {
/* super.paintComponent(g); here is useless since
* we don’t extend an existing component */
super.paintComponent(g);
if (isOpaque()) {
g.setColor(getBackground());
g.fillRect(0,0,getWidth(),getHeight());
}
g.setColor(Color.YELLOW);
g.fillArc(0,0,getWidth(),getHeight(),35,280);
g.setColor(Color.BLACK);
g.fillOval((int)(getWidth()*.65),(int)(getHeight()*0.15),
(int)(getWidth()*.08),(int)(getHeight()*0.08));
}
}
Contrat d’opacité
● si on n’hérite pas d’un composant existant et si le composant ne remplit pas toute la zone de dessin, il faut obéir au contrat d’opacité:
– si lecomposantest opaque, on remplit la zone avec la couleur defond
– sinon,onne fait rien
if (isOpaque()) {
g.setColor(getBackground());
g.fillRect(0,0,getWidth(),getHeight());
}
……..
Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours Interface Graphique en Java 1.6 Dessin (827 KO) (Cours PDF)