|   INTRODUCTION AFFICHAGE JAVAMéthode générique
 héritée de Java 1.0
 Affichage évolué
 en Java2D
 GRAPHIQUESVECTORIELS
 IMAGES BITMAP TEXTE ET POLICESDE CARACTÈRES
 IMPRESSION EXEMPLES    RETOUR
 |  | Introduction Java 2D: Ensemble de classes destinées à la gestion de l'affichage 2D
    sous Java 2. 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
    héritée de Java 1.0 Surcharge de la méthode void
    paint(Graphics g) des classes Java de base gérant un affichage (en fait
    toutes les classes héritant de Component qui est la classe abstraite définissant paint). Les classes développées seront obtenues par
    dérivation et surcharge de cette méthode pour la gestion de leurs affichages. 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 d'un objet. L'objet Graphics obtenu
    en entête la fonction paint est
    instancié et géré par le rendeur Java. Il est utilisé par le programmeur uniquement au
    sein des fonctions paint pour réaliser
    les opérations élémentaires de dessin au moyen des méthodes qu'il propose. 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 sommets,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,... Exemples: 
      void setColor(Color coul); coul est la couleur utilisée 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 en x et en y. 
      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). Fonctions membres de
    la classe Graphics (environ 50 fonctions)  Affichage évolué en Java2D Nouvelles possibilités apportées avec Java2 -> Java2D. Utilisation de la classe Graphics2D
    dérivant de Graphics et apportant des fonctionnalités supplémentaires tout en assurant
    une compatibilité ascendante grâce à la dérivation. Implantation Conservation de la technique générique consistant à écrire une
    méthode void paint(Graphics g).
    Instanciation d'un objet Graphics2D par
    casting sur l'objet Graphics de l'entête
    de méthode classique. Utilisation de cet objet pour les fonctions d'affichage. public
    void paint(Graphics g) {Graphics2D g2 =(Graphics2D) g;
 ...
 }
 Fonctionnalités supplémentaires 
      Toutes les coordonnées passées à un objet Graphics2D sont spécifiées dans un repère à 2
      dimensions (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 2D réalisées sur l'objet Graphics2D
      sont cumulées au sein de cet objet. Tout objet graphique dessiné sera préalablement
      affecté de cette transformation. Initialement, l'objet AffineTransform
      est configuré à l'identité. 
      Affichage plus évolué  
          Formes évoluées: ShapeContrôle de l'outil de dessin : Anti-crénelage (anti-aliasing), ...Pinceaux pour les bords et les intérieurs des surfaces: Stroke, PaintClippingComposition de pixels, d'imagesGestion de l'optimisation vitesse <-> qualité d'affichage... Fonctions membres
    de la classe Graphics2D (environ 40 fonctions) 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
        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 du système 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.
 Exemple d'applet réalisant
    une impression Exemples Applets Applications 
 |