Cours dessin java et java 2D

Cours dessin java et java 2D, tutoriel & guide de travaux pratiques en pdf.

Java 2D et Swing
Graphics
repaint(), et en Swing
Composants de base
Chaîne de traitement
Les formes (Shape)
Les courbes, les aires
Transformations affines

2D et Swing : deux avantages

« Pour les composants : AWT et Swing
« Pour l’affichage : Graphics et Graphics2D

Le dessin de base

« Les outils de dessin sont assez rudimentaires :
#des méthodesdraw*()et fill*()pour lignes, rectangles, ovales, polygone;
#choix dedeux modes de dessin : directou xor;
#une zone de découpe (clipping) rectangulaire.
« Java 2 propose des possibilités très sophistiquées:
#des méthods draw(Shape)et fill(Shape)
#Choix des 8 modes de dessin
#des zones de découpe arbitraires (en principe)
#des transformations géométriques complexes
« En Swing, le “double buffering” est automatique par défaut.

Contexte graphique

« L’outil de dessin est lecontexte graphique, objet de la classe Graphics.
Il encapsule l’information nécessaire, sous forme d’état graphique.
Celui-ci comporte
#la zone de dessin (le composant), pour les méthodes draw*()et fill*()
#une éventuelle translation d’origine
#le rectangle de découpe (clipping)
#la couleur courante
#la fonte courante
#l’opération de dessin (simple ou xor)
#la couleur du xor, s’il y a lieu.
« Chaque composant peut accéder implicitement et explicitement à un contexte graphique.

Obtenir un contexte graphique
« On obtient un contexte graphique
#implicitement, dans une méthode paint() ou update(): AWT construit un contexte graphique passé en paramètre,
#explicitement, dans un composant ou dans une image, parget Graphics(),
#explicitement encore, en copiant un objet Graphics existant.
« Un contexte graphique utilise des ressources systèmes. L’acquisition explicite doit être accompagnée, in fine, par une libération explicite au moyen de dispose().
« L’acquisition explicite d’un contexte graphique est – dit-on – signe d’une programmation maladroite.

Un exemple

public classBonjourGribouille
extends Applet {
int xd, yd;
public void init() {
addMouseListener(new Appuyeur());
addMouseMotionListener(new Dragueur());
}
class Appuyeur extends MouseAdapter {
public void mousePressed(MouseEvent e) {
xd = e.getX(); yd = e.getY();
}
}
class Dragueur extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
int x = e.getX(), y = e.getY();
Graphics g = getGraphics();
g.drawLine(xd, yd, x, y);
xd =x;yd = y;
g.dispose();
}
}
}

Sans appel explicite : AWT seulement

"Fait appel à latriplette magique
repaint
update
paint
"repaint()demande un
rafraîchissement. Appelle
update(),en lui fournissant un
contexte graphique.
"update()par défaut efface le
dessin et appellepaint().
"paint()par défaut ne fait rien.
"Ici
#repaint()appelleupdate();
#update()n'efface pas;
#paint()trace la ligne.
public class BonjourGribouille2
extends Applet {
int xd, yd, x, y;
public void init() { idem }
public voidupdate(Graphics g) {
paint(g);
}
public voidpaint(Graphics g) {
g.drawLine(xd, yd, x, y);
xd= x;yd= y;
}
class Appuyeur extends MouseAdapter {
public void mousePressed(MouseEvent e) {
xd = e.getX(); yd = e.getY();
}
}
class Dragueur extends MouseMotionAdapter {
public void mouseDragged(MouseEvent e) {
x = e.getX(); y = e.getY();
repaint();
}
}
}

……….

Cours dessin java et java 2D

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *