Bonjour,
J'ai un JDesktopPane qui contient des JInternalFrame que j'ai customisé puisqu'elle n'elles ne contiennent qu'une image (affiché dans un paint redéfini) chacune et que j'ai enlevé l'UI (barre de titre, border ...).
Cela me sert à gérer une scène de vie comme le montre l'image "auberge_1.jpg".
J'ai commencé à implémenter un outil de zoom qui permet de zoomer/dézoomer l'affichage du JDesktopPane. Pour cela l'outil demande à chaque fenetre de recalculer son image en fonction de l'échelle (ce qui marche très bien).
On voit ainsi dans l'image "auberge_2.jpg" que les objets sont plus petits après un zoom de -0.2 (80%) et que leur position relative entre eux reste correcte.
Par contre l'image "auberge_3.jpg" montre le résultat après un zoom +0.2 qui devrait me faire revenir à l'image initiale. Mais si la taille des objets est ok, leur position n'est pas bonne sachant que pour la position j'applique la même échelle que pour la taille : pos_x/y * scale. Or malheureusement ce qui ne marche pas dans un sens (passer de l'échelle 1 à l'échelle 0.8 correspond à faire pos_x/y * 0.8) ne marche pas dans l'autre sens (repasser de 0.8 à 1 ne correspond pas à 1, ni même à 1.2). Et je ne trouve pas quelle être la règle mathématique à appliquer dans ce cas, je sens qu'il y a une histoire de trigonométrie là-dedans (et j'ai toujours eu des boutons avec ça).
Alors si quelqu'un a une idée sur la règle de calcul à appliquer pour calculer la position d'objets lors d'un zoom -/+, merci d'avance :-)
Partager