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
- rotate
- Translate
- Le clipping
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.
Rotation des images.
Peut permettre de déplacer l’origine du repère de g2 au centre du composant par exemple.
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 textLayoutGeneralPath.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.
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);