INTRODUCTION
AFFICHAGE
JAVA
Méthode générique
Affichage évolué
GRAPHIQUES
VECTORIELS
IMAGES BITMAP
TEXTE
ET POLICES
DE CARACTÈRES
IMPRESSION
EXEMPLES
RETOUR
|
|
Introduction
Ensemble de classes destinées à la
gestion de l'affichage 2D sous Java.
Manipulation de:
- graphiques vectoriels,
- images bitmap,
- texte et polices de caractères,
- fonctions d'impression,
- ...
Classes Java2D non regroupées au sein
d'un package unique. Complément aux classes préexistantes de l'AWT (Abstract Windows
Toolkit).
L'affichage
en Java
Une
technique générique pour l'affichage
Technique issue du J.D.K. 1.0.
Surcharge de la méthode void
paint(Graphics g) des classes Java de base gérant un affichage. Les classes développées
seront obtenues par dérivation et surcharge de cette méthode.
Généralement dérivation d'une des
deux classes:
java.applet.Applet: Écriture
d'applets simples.
Exemple: Une applet "AppletSimple.class" de téléchargement sur le net et
d'affichage d'une image.
java.awt.Canvas: Écriture d'applets
complexes et d'applications.
Exemple: Une applet-application "AppletInterface.class"
avec une interface utilisateur.
void paint(Graphics g)
Méthode appelée automatiquement en
cas de détection par le rendeur Java d'un événement entraînant un affichage de
l'objet.
L'objet Graphics est géré par le
rendeur et est utilisé par le programmeur uniquement au sein des fonctions paint pour
réaliser les opérations élémentaires de dessin.
Les affichages graphiques sont
réalisés dans une fenêtre plongée dans un repère dont l'origine est en haut à
gauche, l'axe des x est orienté vers la droite, l'axe des y est orienté vers le bas. Les
coordonnées entières ou non représentent des nombres de pixels.
Exemple: Affichage
d'une image et traçage d'un rectangle.
Image i = ...;
public void paint(Graphics g) {
if ( i != null )
g.drawImage(i,1,1,this) ;
g.drawRect(0,0,100,160) ;
}
La classe Graphics fournit les
fonctions de base nécessaires à l'affichage (non exhaustivement):
- de segments de droites,
- de rectangles remplis ou non,
- de rectangles avec sommets arrondis remplis ou non,
- de cercles remplis ou non,
- d'ellipses remplies ou non,
- d'arcs de cercles et d'ellipses remplis ou non,
- de chaînes de caractères,
- d'images,
- ...
ainsi qu'à certaines opérations du
type:
- choix de la couleur de tracé,
- choix du motif de tracé,
- choix d'une police de caractères,
- définition d'une zone de clipping,
- ...
Fonctions membres de la classe Graphics (environ 50 fonctions)
Exemples:
void setColor(Color c);
c est la couleur pour tous les tracés
futurs jusqu'au prochain changement de couleur.
void drawRect(int x,int y,
int
width,int height);
(x,y) est la position du coin
supérieur gauche du rectangle. width et height sont les dimensions du rectangle.
boolean drawImage(Image img,
int x,int y,
ImageObserver obs);
img est l'objet image à afficher.
(x,y) est la position du coin supérieur gauche de l'image. obs est un objet interface ImageObserver destiné à gérer les
problèmes liés à l'acquisition d'une image (par exemple un téléchargement en tâche
de fond).
Affichage
évolué
Utilisation de la classe Graphics2D
dérivant de Graphics et apportant des fonctionnalités supplémentaires tout en assurant
une compatibilité ascendante.
Implantation
Conservation de la technique
générique consistant à écrire une méthode void paint(Graphics g). Acquisition d'un
objet Graphics2D par casting sur l'objet Graphics de l'entête de méthode. Utilisation de
cette objet pour les fonctions d'affichage.
public void paint(Graphics g) {
Graphics2D g2 =(Graphics2D) g;
...
}
Fonctions membres de la classe Graphics2D (environ 40
fonctions)
Fonctionnalités
supplémentaires
Toutes les coordonnées passées à un
objet Graphics2D sont spécifiées dans un repère (appelé UserSpace, espace utilisateur)
indépendant du périphérique d'affichage. L'objet Graphics2D contient un objet AffineTransform qui définit comment
convertir des coordonnées UserSpace vers leur équivalent dans le repère d'affichage.
Les transformations géométriques réalisées sont cumulées au sein de cet objet. Tout
objet graphique dessiné sera préalablement affecté de cette transformation.
Affichage plus évolué
- Formes évoluées: Shape
- Contrôle de l'outil de dessin : Anti-crénelage
(anti-aliasing), ...
- Pinceaux pour les bords et les intérieurs: Stroke, Paint
- Clipping
- Composition de pixels, d'images
- Gestion de l'optimisation vitesse <-> qualité
d'affichage
- ...
Les
graphiques vectoriels
Objets vectoriels
Segments de droites:
- void drawLine(int x1,int y1,int x2,int y2);
Rectangles remplis ou non:
- void drawRect(int x,int y,int width,int height);
- void fillRect(int x,int y,int width,int height);
Rectangles avec sommets
arrondis remplis ou non:
- 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);
Cercles et d'ellipses remplis
ou non:
- void drawOval(int x,int y,int width,int height);
- void fillOval(int x,int y,int width,int height);
Arcs de cercles et d'ellipses
remplis ou non:
- void drawArc(int x,int y,int width,int height,int startAngle,int arcAngle);
- void fillArc(int x,int y,int width,int height,int startAngle,int arcAngle);
Polygones remplis ou non:
- void drawPolygon(int[] xPoints,int[] yPoints,int nPoints);
- void drawPolygon(Polygon p);
- void fillPolygon(int[] xPoints,int[] yPoints,int nPoints);
- void fillPolygon(Polygon p);
Formes évoluées remplies ou non:
- void draw(Shape s);
- void fill(Shape s);
Attributs graphiques
Les images
bitmap et la gestion des pixels
Fonctions d'affichage des images:
- boolean drawImage(Image img,int x,int y,Color bgcolor,ImageObserver
observer);
- boolean drawImage(Image img,int x,int y,ImageObserver
observer);
- boolean drawImage(Image img,int x,int y,int width,int height,Color bgcolor,ImageObserver observer);
- boolean drawImage(Image img,int x,int y,int width,int height,ImageObserver
observer);
- boolean drawImage(Image img,int dx1,int dy1,int dx2,int dy2,int sx1,int sy1,int sx2,int
sy2,Color bgcolor,ImageObserver observer);
- boolean drawImage(Image img,int dx1,int dy1,int dx2,int dy2,int sx1,int sy1,int sx2,int
sy2,ImageObserver observer);
- void drawImage(BufferedImage img, BufferedImageOp op, int x, int y);
- boolean drawImage(Image img, AffineTransform xform, ImageObserver obs);
Composition de pixels via le canal
alpha (gestion de transparences):
- void setComposite(Composite comp)
Le
texte et les polices de caractères
Affichage de texte
Fonctions de la classe Graphics:
- void drawString(AttributedCharacterIterator ite,int x,int y);
- void drawString(String str,int x,int y);
Fonctions de la classe Graphics2D:
- void drawString(AttributedCharacterIterator ite, float x, float y);
- void drawString(AttributedCharacterIterator ite, int x, int y);
- void drawString(String s, float x, float y);
- void drawString(String str, int x, int y);
Fonction de la classe TextLayout:
- void draw(Graphics2D g2, float x, float y);
La classe TextLayout permet une large part
des manipulations sur les polices de caractères.
Choix de la police de
caractères
Liste des polices de
caractères
Les
fonctions lièes à l'impression
Java 2 fournit une architecture
dédiée à l'impression:
Ecriture d'une classe implantant Printable pour spécifier la méthode destinée
à dessiner une page sur l'imprimante:
- int print(Graphics graphics, PageFormat pageFormat, int pageIndex);
Instanciation d'un objet de classe PrinterJob avec dans l'ordre l'appel aux
méthodes:
- static PrinterJob getPrinterJob(); pour obtenir un objet de classe PrinterJob,
- PageFormat defaultPage(); pour obtenir un objet de classe PageFormat,
- abstract void setPrintable(Printable painter,
PageFormat format); pour spécifier la méthode de dessin de page,
- abstract boolean printDialog(); pour obtenir une fenêtre de dialogue dédiée au
lancement d'une impression,
- abstract void print(); pour lancer l'impression.
Exemples
Applets
Applications

|