Les transformations sur les images

Présentation des transformations affines, du clipping (intersection de deux zones dessinées), des superpositions, des rendus (RenderingHints)

Transformations Affines

AffineTransform permet des transformations matricielles, mais a définit quelques transformations usuelles :

AffineTransform.getTranslateInstance(x, y)

Effectuer une transformation temporaire, sans affecter le contexte :

old = g2.getTransform();
g2.transform(newTransformation);
g2.setTransform(old);
  • Scale
  • Permet de zoomer les images : scale(pixelsParUnite, pixelsParUnite) (scale(2, 2) double l’image. draw(shape); fournir en coordonnées normales, le scale s’occupe de redimensionner.

  • rotate
  • Rotation des images.

  • Translate
  • Peut permettre de déplacer l’origine du repère de g2 au centre du composant par exemple.

  • Le clipping
  • setClip(shape) : remplace la zone de clipping du contexte. Utiliser g2.clip(shape). Permet l’intersection de la forme de clipping existante avec la forme passée en paramètre.
    Effectuer un clipping temporaire :

    old = g2.getClip();
    g2.clip(shape);
    // dessin
    g2.setClip(old);
    

    Effectuer un clipping sur un texte (dessiner dans les lettres) :

    • Récupérer le contexte d’affichage : g2.getFontRendererContext()
    • Créer l’objet TextLayout(chaine, font, contexte)
    • Contrôle des distances : getAdvance (longueur du texte), getAscent (hauteur de lettre de base à haut total), getDescent (base à queue des lettres), getLeading (interligne)
    • getOutline renvoit la shape correspondant au textLayout
    • GeneralPath.append(shape)
    • g2.setClip(generalPath);

Effets de rendus

  • Superposition
  • Règle par défaut à utiliser : SRC_OVER.

    int role = Alphacomposite.SRC_OVER;
    float alpha = ...
    g2.setComposite(AlphaComposite.getInstance(role, alpha))
    

    Utiliser des images temporaires avec le modèle ARGB.

  • Rendu
    • RenderingHints.KEY_ANTIALIASING : VALUE_ANTIALIAS_ON / OFF / DEFAULT
    • RenderingHints.KEY_RENDERING : VALUE_RENDER_QUALITY / SPEED / DEFAULT
    • RenderingHints.KEY_DITHERING : VALUE_DITHER_ENABLE / DISABLE / DEFAULT (diffusion des couleurs, simulation d’un nombre plus important de couleurs).
    • KEY_TEXT_ANTIALIASING : on / off / default
    • KEY_FRACTIONAL_METRICS : positionnement précis des caractères
    • KEY_ALPHA_INTERPOLATION : calcul précis des composants alpha)
    • KEY_COLOR_RENDERING : qualité / vitesse
    • KEY_INTERPOLATION : règle d’interpolation quand l’image est déformée).
    RenderingHints hints = new ...
    hints.put(key, valeur);
    ...
    g2.setRenderingHints(hints);
    

Laisser un commentaire

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