IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

[TChart] Déplacer un point sur une courbe


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut [TChart] Déplacer un point sur une courbe
    Bonjour,

    Sur mon graphe j'ai donc une courbe TLineSeries sur laquelle sont positionnés des points (TPointSeries).
    Je voudrais qu'en bougeant ces points à la souris leurs coordonnées suivent celles de la courbe ! Puisqu'un exemple vaut toujours mieux que maints discours : comme ceci (survolez le graphe à la souris).

    Alors rien de plus simple pour le X :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TfrmMain.ChartMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
      SeriesPoints.XValues[iIndexDuPoint] := SeriesLine.XScreenToValue(X);
    end;

    ...mais pour l'ordonnée ça se complique : il faut trouver le Y correspondant au X dans le vecteur YValues de SeriesLine, autrement dit connaitre l'index du point X dans XValues et récupérer la valeur correspondante dans YValues.
    Ce qui donnerait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SeriesPoints.YValues[iIndexDuPoint] := SeriesLine.YValues[index_du_X];
    Mais je n'arrive pas à récupérer cet index même si la méthode Locate est prévue pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index_du_X := SeriesLine.XValues.Locate(SeriesLine.XScreenToValue(X));
    Tout simplement parce que mes valeurs sont de l'ordre de e10-5 (le pas entre 2 points est aux alentours de 2,5.10-5) et qu'un Locate(0,006574123), forcément, ne donne rien.

    Des idées svp ?

  2. #2
    Membre habitué
    Développeur .NET
    Inscrit en
    Juin 2002
    Messages
    274
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2002
    Messages : 274
    Points : 174
    Points
    174
    Par défaut
    Bon pour info et faute d'autre solution : je retrouve l'indice à l'aide d'une boucle.

    Quelques optimisations cependant :
    • parcours de la moitié des éléments seulement (détection du X : "début" ou "fin" de graphique)
    • stockage de l'écart à chaque itération : s'il diminue on continue, dès qu'il augmente on s'arrête

    Voilà c'est pas folichon mais ça fonctionne et c'est réactif...

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Points : 3
    Points
    3
    Par défaut chart onclickseries
    Est-t-il possible d'utiliser l'évènement onClickSeries au lieu de onMouseMove ?
    L'index du point est fourni à la procédure de réaction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    procedure TForm1.Chart1ClickSeries(Sender: TCustomChart;
      Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);

Discussions similaires

  1. Ajout de points sur une courbe 3D
    Par cyprien.209 dans le forum Scilab
    Réponses: 1
    Dernier message: 28/01/2015, 09h53
  2. Déplacer un point sur une courbe
    Par Xen956 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 09/06/2012, 12h15
  3. Déplacer un point sur une sphère
    Par Mr21_ dans le forum Mathématiques
    Réponses: 21
    Dernier message: 30/08/2010, 00h51
  4. [TPW] Déplacer un point sur une trajectoire
    Par dmimnet dans le forum Turbo Pascal
    Réponses: 12
    Dernier message: 13/04/2008, 19h58
  5. Déplacer un point sur une courbe
    Par Wassim123 dans le forum MATLAB
    Réponses: 3
    Dernier message: 19/09/2007, 14h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo