Bonjour,
voici mon problème. Etant donné un JPanel, un contexte graphique y est attaché. Quand on appelle par exemple g.drawLine(a,b,c,d) une ligne est dessinée en utilisant des coordonnées bien précises. Mon but est de trouver un moyen de changer de repère de telle manière que quand j'appelle g.drawline(a,b,c,d) la ligne se dessinne mais en utilisant le repère que j'aurai indiqué (par l'intermédiaire de coordonnées extrêmes correspondantes aux bords de mon JPanel, par exemple).
Pour ceci j'ai plusieurs solutions plus ou moins jolies.
L'une d'elles est l'idée de créer une sous classe de Graphics2D et de redéfinir drawline, (et d'autres bien sûr) en tenant compte de mes nouvelles coordonnées. Est-ce une bonne idée ? Y a-t-il un manière canonique de procéder à ce genre de chose qui me semble hyper classique ?
Autre idée :
J'ai utilisé les méthodes translate(), scale() mais cette dernière ne donne pas satisfaction. En effet le problème est que si les extrêmités des abscisses (par exemple) sont 0 et 1 je ne peux pas écrire drawLine(0.2, 0.3,...,...) car elle n'accepte que des types int. D'ailleurs, soit dit en passant, je ne comprends pas l'intérêt de cette fonction scale().
C'est dommage car il me semblait qu'utiliser translate et scale était la solution la plus jolie.
Le problème de la sous classe de Graphics2D est que cette dernière est abstraite et creer un sous classe nécessite de tout redéfinir. Je n'arrive pas à m'en sortir.
J'ai bien une dernière solution, mais plutot moche : elle consiste à créer une classe qui définit des méthodes qui transforment des coordonnées d'un point dans un repère en des coordonnées dans un autre repère, et vice-versa. Au fond c'est pas mal, mais j'ai l'impression qu'on peux mieux faire.
Qu'en pensez-vous ? Avez-vous des solutions à ce problème ?
Merci d'avoir prêté attention à mon problème.
Partager