précédent | suivant | table des matières

Dessiner : Graphics

Sommaire
  1. Modification des attributs
  2. Méthodes de dessin
espace de dessin

L'outil de dessin en Java est un  contexte graphique, objet de la classe Graphics ou de la classe Graphics2D.

Un contexte graphique :

Les dessins se font dans un composant, en général un JPanel, à partir duquel on obtient un Graphics de deux façons :

L'espace de dessin a une origine qui est le point haut gauche, l'axe des x est orienté positivement vers la droite, et l'axe des y positivement vers le bas.

1Les méthodes de modification des attributs :

Shape getClip()
Retourne la forme de découpe, ou null s'il n'y en a pas.
void setClip(Shape cl)
La forme cl devient la forme de découpe.
void setClip(int x, int y, int l, int h)
Le rectangle spécifié en paramètre de vient le rectangle de découpe.
void clipRect(int x, int y, int l, int h)
La forme de découpe devient l'intersection de l'ancienne forme avec le rectangle en paramètre.
Rectangle getClipBounds()
Retourne le rectangle circonscrit à la forme de découpe.
Color getColor()
Retourne la couleur de tracé courante.
void setColor( Color c)
Modifie la couleur de tracé courante.
Font getFont()
Retourne la police de caractères courante.
FontMetrics getFontMetrics()
Retourne le FontMetrics assoocié à la police courante.
void setFont( Font f)
Modifie la police de caractères courante.
void setPaintMode()
Les pixels seront affiché par dessus les pixels déjà affichés.
void setXORMode(Color c)
Les pixels seront affichés en faisant le XOR ( ou exclusif ) avec le pixel déja affiché, et la couleur c.

2Les méthodes de dessin :

void draw3DRect(int x, int y, int l, int h, 
     boolean e)
Dessine un rectangle  en 3 dimensions, qui est élevé si e vaut true. Les traits haut et gauche sont plus clairs que les traits bas et droite si e vaut true, et l'inverse si e vaut false.3D Rect
void drawArc(int x, int y, 
     int l, int h, int angleDep, int angle )
Dessine un arc de cercle inscrit dans le rectangle, démarrant à angleDep et d'angle angle.
void drawLine(int x, int y, int x1, int y1)
Dessine une ligne entre les deux points.
void drawOval(int x, int y, int l, int h)
Dessine une ellipse inscrite dans le rectangle en paramètre.
void drawPolygon(Polygon p)
Dessine un polygone.
void drawPolygon(int []x, int []y, int n)
Dessine un polygone donné par ses coordonnés x et y et le nombre de points du polygone. Le dernier point est relié au premier point.
void drawPolyline(int []x, int []y, int n)
Dessine une poly-ligne donnée par ses coordonnés x et y et son nombre de points. Le dernier point n'est pas relié au premier point.
void drawRect(int x, int y, int l, int h)
Dessine un rectangle.
void drawRoundRect(int x, int y, 
     int l, int h, int arcL, int arcH)
Dessine un rectangle aux coins arrondis : arcL et arcH sont respectivement la largeur et la hauteur des arcs d'arrondi.

void fill3DRect(int x, int y, int l, int h, 
     boolean e)
Remplit un rectangle  en 3 dimensions, qui est élevé si e vaut true. Les traits haut et gauche sont plus clairs que les traits bas et droite si e vaut true, et l'inverse si e vaut false.3D Rect
void& fillArc(int x, int y, int l, int h, 
     int angleDep, int angle )
Remplit un arc de cercle inscrit dans le rectangle, démarrant à angleDep et d'angle angle.
void fillOval(int x, int y, int l, int h)
Remplit une ellipse inscrite dans le rectangle en paramètre.
void fillPolygon(Polygon p)
Remplit un polygone.
void fillPolygon(int []x, int []y, int n)
Remplit un polygone donné par ses coordonnés x et y et le nombre de points du polygone. Le dernier point est relié au premier point.
void fillRect(int x, int y, int l, int h)
Remplit un rectangle.
void fillRoundRect(int x, int y, int l, int h,
     int arcL, int arcH)
Remplit un rectangle aux coins arrondis : arcL et arcH sont respectivement la largeur et la hauteur des arcs d'arrondi.

Pour les méthode suivantes, l'écriture de texte se fait en utilisant la police courante : pour plus de détails voir FontMetrics.

void drawBytes(byte[] t, int d, int l, int x, int y)
Ecrit le texte donné dans le tableau t à partir de d sur une longueur de l, en x, y.
void drawChars(char[] t, int d, int l, int x, int y)
Ecrit le texte donné dans le tableau t à partir de d sur une longueur de l, en x, y.
void drawString(String s, int x, int y)
Ecrit le texte donné par la chaîne s, en x, y. La ligne de coordoonées y est la ligne de base de la chaîne de caractères.

Les méthodes ci-dessous permettent d'afficher une image :
Toolkit tk = Toolkit.getDefaultToolkit();
Image img = tk.getImage(getClass().getResource("..."));
g.drawImage(img, ... );

boolean drawImage(
     Image i, int x, int y, Color f, 
     ImageObserver obs)
Affiche l'image i, en x, y. Les pixels transparents sont affichés avec la couleur de fond f. ImageObserver est une interface contenant la méthode boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height). Les composant Swing implémentent cette méthode. C'est le composant qui sera notifié de l'état d'avancement de l'affichage de l'image.
boolean  drawImage(Image i, int x, int y,
	  ImageObserver obs)
 
boolean  drawImage(Image i, int x, int y, 
     int l, int h, 
     Color f, ImageObserver obs)
L'image est retaillée pour remplir le rectangle.
boolean drawImage(Image i, int x, 
	       int y, int l, int h,
           ImageObserver obs)
 
boolean drawImage(Image i, int dx1, int dy1, 
	      int dx2, int dy2,
          int sx1, int sy1, int sx2, int sy2,
          Color f, ImageObserver obs)
Dessine la partie de l'image spécifiée par le rectangle source dans le rectangle destination.
boolean drawImage(Image i, int dx1, int dy1, 
	     int dl1, int dh1,
         int dx2, int dy2, int dl2, int dh2 ,
         ImageObserver obs)
 

haut de la page