Bonjour à tous,
je travaille sur la rotation d'une image au sein d'un JPanel.
Je précise que je ne fais que des rotations par pas de 90°.
J'utilise pour cela la fonction rotate de graphics en prenant comme centre de rotation le centre de mon image (longueur/2, largeur/2).
Je souhaite faire en sorte que mon image soit toujours située en haut a gauche de mon JPanel, pour cela, je la translate en fonction de l'angle et je recalcule les Bounds du JPanel englobant de la manière suivante :
Si angle de 90 ou 270° : heightJPanel = width Image, widthJPanel = heightImage
Si angle de 180 ou 0° : heightJPanel = height Image, heightJPanel = heightImage
Voici la portion de code :
pourtant, ca ne fonctionne pas comme je le souhaiterai. Ca ne fonctionne pas pour toutes les tailles d'images. J'ai surement fait une erreur de trigo, mais les maths ne sont pas mon fort, quelqu'un peut il me renseigner ? (pour précision, Ct est une variable de zoom).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 double jk=rotationCanva/(Math.PI/2); if(jk%4==0){ // rotation 0% g2.rotate(rotationCanva,(image.getHeight(null)*CT)/2.0,(image.getWidth(null)*CT)/2.0); } if(jk%4==2){ // rotation 180% g2.rotate(rotationCanva,(image.getWidth(null)*CT)/2.0,(image.getHeight(null)*CT)/2.0); } if(jk%4==1){ // rotation 90% g2.rotate(rotationCanva,(image.getHeight(null)*CT)/2.0,(image.getWidth(null)*CT)/2.0); g2.translate((image.getWidth(null)*CT)/2.0,-(image.getHeight(null)*CT)/4.0); } if(jk%4==3){ // rotation 270% g2.rotate(rotationCanva,(image.getHeight(null)*CT)/2.0,(image.getWidth(null)*CT)/2.0); g2.translate((image.getWidth(null)*CT)/2.0,-(image.getHeight(null)*CT)/4.0); }
Cordialement,
Partager