none
Obtenir la position du curseur sur un graphique RRS feed

  • Question

  • Bonjour,

    j'ai crée un graphique ("chart1") avec un zone de graphique ("chartarea1"). Jusque là tout va bien , j'arrive à faire afficher les données que je veux sous la forme qui va bien.

    Par contre j'aimerais faire afficher la position du curseur dans deux labels, un pour les ordonnées et l'autre pour les abscisses. Pour cela, j'ai crée une sub pour l'événement "MouseMove" du chart1 mais ça ne marche pas, les labels m'affichent "Non numérique". Quand je dis position du curseur, je veux dire suivant l'échelle des axes (pas en pixels).

    Par exemple pour faire afficher l'abscisse dans le label de même nom, j'ai codé :

    Abscisse.Text = Chart1.ChartAreas(0).CursorX.Position

    Qu'Est-ce qui ne va pas ? Pouvez-vous m'aider svp ? Merci.

    Sébastien

    jeudi 16 janvier 2014 10:09

Réponses

  • Bonjour

    Voir la réponse marquée dans ce thread:

    http://stackoverflow.com/questions/5425122/showing-mouse-axis-coordinates-on-chart-control

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera vendredi 17 janvier 2014 12:20
    • Marqué comme réponse Ponyo69 samedi 18 janvier 2014 00:19
    vendredi 17 janvier 2014 12:20
  • Merci de m'avoir mis sur la voie. J'ai cru que cela ne correspondait pas à mon besoin et au final, il fallait juste que je paramètre bien les propriétés.

    Le résultat :

    MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseMove
            Dim px As Double, py As Double
            ' Pour afficher le curseur
            Chart1.ChartAreas(0).CursorX.SetCursorPixelPosition(New Point(e.X, e.Y), False)
            Chart1.ChartAreas(0).CursorY.SetCursorPixelPosition(New Point(e.X, e.Y), False)
            ' Pour ne pas faire afficher les lignes (rouges par défaut) qui suivent le curseur
            Chart1.ChartAreas(0).CursorX.LineWidth = 0
            Chart1.ChartAreas(0).CursorY.LineWidth = 0
            ' Pour avoir les valeurs "en continu" et pas seulement suivant un intervalle
            Chart1.ChartAreas(0).CursorX.Interval = 0
            Chart1.ChartAreas(0).CursorY.Interval = 0
            ' Récupérer la position du curseur suivant les axes (l'axe Y est en log)
            pX = Chart1.ChartAreas(0).CursorX.Position
            py = 10 ^ Chart1.ChartAreas(0).CursorY.Position
            ' Affichage dans les labels
            Abscisse.Text = "E = " & Format(px, "0.000") 
            Ordonnee.Text = "I = " & Format(py, "0.00E+00") 
        End Sub


    • Marqué comme réponse Ponyo69 samedi 18 janvier 2014 00:19
    • Modifié Ponyo69 samedi 18 janvier 2014 08:06
    vendredi 17 janvier 2014 23:59

Toutes les réponses

  • Bon j'ai compris pourquoi ça ne marchait pas, par contre je n'ai pas réussi à faire ce que je voulais. Et j'oubliais, petite subtilité : un des axes est à l'échelle log.
    jeudi 16 janvier 2014 17:13
  • Bonjour,

    Nous avons du mal à comprendre ce qui vous pose problème maintenant....
    Qu'est ce qui fonctionne ? Et qu'est ce qui ne fonctionne pas ?

    Cordialement


    Gilles TOURREAU - MVP C#
    Architecte logiciel/Consultant/Formateur Freelance - P.O.S Informatique
    Blog : http://gilles.tourreau.fr - Suivez-moi sur Twitter
    - MCPD : Enterprise Developper / Windows Developper 3.5 / ASP .NET 3.5/4.0
    - MCSA : SQL Server 2012
    - MCITP : SQL Server 2008 Developper
    - MCTS : ADO .NET 3.5 / SQL Server 2008 Developper / Windows Forms 3.5 / ASP .NET 3.5/4.0 / TFS 2010 / Windows Azure

    jeudi 16 janvier 2014 22:51
    Modérateur
  • Bonjour,

    Merci pour votre réponse Gilles.

    Je voudrais connaître la position de mon curseur lorsqu'il passe devant un graphique. Et je voudrais que cette position soit exprimées suivant les valeurs affichées sur les axes de mon graphique.

    J'arrive à faire afficher les coordonnées (x,y) du curseur dans deux labels mais en coordonnées écran. Par contre je voudrais que ces coordonnées correspondent aux valeurs affichées sur les axes de mon graphique. Petite subtilité, l'axe des ordonnées est en échelle log. et les min/max des deux axes changent suivant les courbes affichées.

    Cordialement,

    Sébastien

    vendredi 17 janvier 2014 07:24
  • Bonjour

    Voir la réponse marquée dans ce thread:

    http://stackoverflow.com/questions/5425122/showing-mouse-axis-coordinates-on-chart-control

    Cordialement,


    Aurel BERA, MSFT
    MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
    S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution.


    • Modifié Aurel Bera vendredi 17 janvier 2014 12:20
    • Marqué comme réponse Ponyo69 samedi 18 janvier 2014 00:19
    vendredi 17 janvier 2014 12:20
  • Merci de m'avoir mis sur la voie. J'ai cru que cela ne correspondait pas à mon besoin et au final, il fallait juste que je paramètre bien les propriétés.

    Le résultat :

    MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseMove
            Dim px As Double, py As Double
            ' Pour afficher le curseur
            Chart1.ChartAreas(0).CursorX.SetCursorPixelPosition(New Point(e.X, e.Y), False)
            Chart1.ChartAreas(0).CursorY.SetCursorPixelPosition(New Point(e.X, e.Y), False)
            ' Pour ne pas faire afficher les lignes (rouges par défaut) qui suivent le curseur
            Chart1.ChartAreas(0).CursorX.LineWidth = 0
            Chart1.ChartAreas(0).CursorY.LineWidth = 0
            ' Pour avoir les valeurs "en continu" et pas seulement suivant un intervalle
            Chart1.ChartAreas(0).CursorX.Interval = 0
            Chart1.ChartAreas(0).CursorY.Interval = 0
            ' Récupérer la position du curseur suivant les axes (l'axe Y est en log)
            pX = Chart1.ChartAreas(0).CursorX.Position
            py = 10 ^ Chart1.ChartAreas(0).CursorY.Position
            ' Affichage dans les labels
            Abscisse.Text = "E = " & Format(px, "0.000") 
            Ordonnee.Text = "I = " & Format(py, "0.00E+00") 
        End Sub


    • Marqué comme réponse Ponyo69 samedi 18 janvier 2014 00:19
    • Modifié Ponyo69 samedi 18 janvier 2014 08:06
    vendredi 17 janvier 2014 23:59