Bonjour,
est ce que quelqu'un pourrai m'expliquer comment fonctionne la classe AffineTransform svp?... Merci d'avance pour votre aide..
Version imprimable
Bonjour,
est ce que quelqu'un pourrai m'expliquer comment fonctionne la classe AffineTransform svp?... Merci d'avance pour votre aide..
Salut,
Si tu souhaite uniquement appliquer une transformation de manière temporaire, il convient de récupérer l'ancienne transformation, de la composer avec la nouvelle transformation et de restaurer l'ancienne transformation lorsque vous avez fini. Pour stocker une transformation temporaire, vous devez passer par la classe AffineTransform qui représente n'importe quel type de transformation. Ensuite, pour récupérer une transformation, utilisez la méthode getTransform() de la classe Graphics2D. Enfin, pour redonner l'ancienne transformation, prenez la méthode setTransform() de Graphics2D.
Exemple :
ensuite, tu applique les nouvelles transformationsCode:AffineTransform ancienne_Transf =g.getTransform();
Enfin, ajouter l'ancienne transformation à la nouvelle:Code:g.translate(......)
Code:g.setTransform(ancienne_Transf );
http://fr.wikipedia.org/wiki/Transformation_affine
Pour le reste c'est comme slim_java l'a dit. Tu peux aussi faire des trucs du genre :
Ainsi donc concaténer plusieurs transformations simples entre elles pour créer une transformation complexe, revient à la même chose qu'enchainer plusieurs primitives de transformation sur le Graphics.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 AffineTransform t1 = AffineTransform.getTranslateInstance(dx, dy); // A utiliser avec précaution ! g2d.setTransform(t1); // Remplace la transformation actuelle de g2d par t. g2d.transform(t1); // Concatène t à la transformation actuelle de g2d. // équivalent à: // g2d.translate(dx, dy); try { g2d.transform(t1.createInverse()); // équivalent à: // g2d.translate(-dx, -dy); } // Certaines transformations affines complexes ne peuvent pas être inversées. // Mais les transformations affines simples telles que la translation, rotation, le changement d'échelle ou la déformation parallèles peuvent l'être. catch (NoninvertibleTransformException nte) { } AffineTransform t2 = AffineTransform.getRotateInstance(Math.PI); g2d.transform(t2); // Concatène t à la transformation actuelle de g2d. // équivalent à: // g2d.rotate(Math.PI); try { g2d.transform(t2.createInverse()); // équivalent à: // g2d.rotate(-Math.PI); } catch (NoninvertibleTransformException nte) { }