Perl/Tk, GD::Graph et zoom sur une image
Bonjour.
J'aurais besoin de conseils concernant une application que je développe en Perl/Tk.
Mon application sert à extraire des données de fichiers texte, puis d'extraire des données X et Y d'intérêt (sélectionnées par l'utilisateur via des JComboBox).
J'affiche alors l'évolution de Y en fonction de X (Y = f(X)) et un autre graphique à l'autre du module GD::Graph (GD::Graph::Lines et GD::Graph::points).
Pour cela je stocke toutes mes valeurs de X dans un tableau, celles de Y dans un autre respectivement.
Je stocke également les valeurs calculées en X et en Y pour une autre méthode.
Mon problème est le suivant :
La personne qui m'a proposé ce projet souhaiterait pouvoir zoomer sur une zone des graphiques.
J'ai donc pour cela créé un bouton permettant de modifier les graphiques. Une fois cliqué, une nouvelle fenêtre s'ouvre, proposant des scalebars pour modifier les valeurs de Xmin, Xmax, Ymin et Ymax.
Une fois sélectionnées, mon programme récupère les valeurs sélectionnées, parcourt les tableaux de X et de Y respectivement, récupère la valeur Xmin la plus proche de celle sélectionnée par l'utilisateur (strictement inférieure ou égale). La même chose pour Xmax mais la valeur dans le tableau qui lui est strictement supérieure ou égale. Et même chose pour les valeurs Ymin et Ymax.
Ensuite je fais une extraction des valeurs situées entre Xmin,Xmax et Ymin,Ymax dans mes tableaux contenant mes X et mes Y, pour récupérer les valeurs qui correspondent à la fenêtre que l'utilisateur veut afficher.
Lorsque je modifie uniquement mes valeurs en X, les valeurs en Y sont calculées automatiquement par le module GD::Graph. Mais le problème survient lorsque j'essaie de modifier les valeurs en Y.
En fait le problème est que GD::Graph a besoin d'un tableau de valeurs de X et d'un tableau de valeurs de Y ayant la même taille (chaque X ayant sa valeur Y). Mais si Xmax-Xmin est différent de Ymax-Ymin, cela coince ...
Donc comment zoomer sur un graphique généré par GD::Graph ?
(Je ne vois pas quelle partie de code je peux vous fournir pour illustrer mon problème mais dites-moi ce qui peut vous être utile pour me répondre).
J'ai essayé Tk::Chart mais j'ai vraiment été déçu par la fonction de zoom qui n'est pas du tout un zoom tout compte fait, seulement une modification de l'affichage.
Merci beaucoup de votre aide :)