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

C++Builder Discussion :

TChart et coordonnées réelles


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut TChart et coordonnées réelles
    Bonjour à tous

    J'utilise le composant TChart pour dessiner des graphiques représentant des données que j'ai récupérer.

    Je voudrais pouvoir obtenir la position de la souris sur ce graph non pas en coordonénes pixels mais en coordonnées réelles (position sur le graph).

    J'ai vu qu'il y avait des fonctions comme CalcPosPoint ou CalcPosValue sur les axes mais cela ne me donne pas ce que je veux.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    void __fastcall TPrincipalForm::OnMouseMoveTChart(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
     
            // On va calculer les coordonnées réelles
            int xreel = Chart->LeftAxis->CalcPosPoint(X);
            int yreel = Chart->BottomAxis->CalcPosPoint(Y);
     
            PanelDuree->Caption = "(" + AnsiString(xreel) + "," + AnsiString(yreel) + ")";
    }
    Merci d'avance pour votre aide.

  2. #2
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    Tu utilises pourtant les bonnes fonctions mais le soucis est que la fonction retourne un double, pas un int.
    J'ai testé avec le code suivant et ca marche très bien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift,
          int X, int Y)
    {
       Label1->Caption = "X = " + FloatToStr(Chart1->BottomAxis->CalcPosPoint(X))
                     + ", Y = " + FloatToStr(Chart1->LeftAxis->CalcPosPoint(Y));
    }

  3. #3
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Je comprend pas, moi j'ai des valeurs complètements abérantes.

    Quand je me rapproche de l'axe des x, les x augmentes.

    Voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TPrincipalForm::OnMouseMoveTChart(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
            // On va calculer les coordonnées réelles
            float xreel = Chart->LeftAxis->CalcPosPoint(X);
            float yreel = Chart->BottomAxis->CalcPosPoint(Y);
     
            PanelDuree->Caption = "(" + FormatFloat("0.0", xreel) + "," + FormatFloat("0.0", yreel) + ")";
    }

  4. #4
    Membre éclairé Avatar de Masmeta
    Homme Profil pro
    Ing. R&D informatique industrielle
    Inscrit en
    Mai 2006
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Ing. R&D informatique industrielle
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2006
    Messages : 472
    Par défaut
    Citation Envoyé par kurul1
    Je comprend pas, moi j'ai des valeurs complètements abérantes.

    Quand je me rapproche de l'axe des x, les x augmentes.

    Voilà mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall TPrincipalForm::OnMouseMoveTChart(TObject *Sender,
          TShiftState Shift, int X, int Y)
    {
            // On va calculer les coordonnées réelles
            float xreel = Chart->LeftAxis->CalcPosPoint(X);
            float yreel = Chart->BottomAxis->CalcPosPoint(Y);
     
            PanelDuree->Caption = "(" + FormatFloat("0.0", xreel) + "," + FormatFloat("0.0", yreel) + ")";
    }
    Pour l'écriture dans ton caption, tu peux utiliser ca aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PanelDuree->Caption =  "(" + FloatToStrF(xreel,ffFixed,7,2) + "," + FloatToStrF(yreel,ffFixed,7,2) + ")";
    FloatToStrF permet de mettre le nombre après la virgule comme tu le désires.

  5. #5
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Merci Masmeta je ne l'a connaissait pas cette fonction. FormatFloat le fait très bien également.

  6. #6
    Membre émérite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Par défaut
    sur quel type de graphique travails tu?
    As tu d'autres évennements sur TChart en plus ?
    Y'aurais pas moyen que tu donnes un peu plus de codes?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2013, 17h18
  2. Réponses: 1
    Dernier message: 15/12/2010, 14h54
  3. Obtenir les coordonnées réelles
    Par chep dans le forum OpenGL
    Réponses: 2
    Dernier message: 19/04/2005, 12h05
  4. [TChart] comment remplir un histogramme avec du rouge strié.
    Par :GREG: dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/08/2002, 09h37

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