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) getOutlinerenvoit 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 / DEFAULTRenderingHints.KEY_RENDERING : VALUE_RENDER_QUALITY / SPEED / DEFAULTRenderingHints.KEY_DITHERING : VALUE_DITHER_ENABLE / DISABLE / DEFAULT (diffusion des couleurs, simulation d’un nombre plus important de couleurs).KEY_TEXT_ANTIALIASING : on / off / defaultKEY_FRACTIONAL_METRICS : positionnement précis des caractèresKEY_ALPHA_INTERPOLATION : calcul précis des composants alpha)KEY_COLOR_RENDERING : qualité / vitesseKEY_INTERPOLATION : règle d’interpolation quand l’image est déformée).
RenderingHints hints = new ... hints.put(key, valeur); ... g2.setRenderingHints(hints);