2017-12-21 6 views
0

ボタンのクリックでグラフを描画するWindowsフォームアプリケーションを作成しました。私はチャートを正常に表示することができました。私はグラフにいくつかの特別な機能を追加することにしました。グラフ上でマウスを動かすと、グラフのX軸のカーソルのピクセル位置を設定するPointオブジェクトが表示されます。同時に、ツールチップはピクセル位置と系列の交点におけるX値とY値を示します。これは私の現在のイベントである:VB.Netチャート:シリーズとピクセル位置のツールヒント

私は取得しています何
Private Sub Chart1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles Chart1.MouseMove 

     Dim mousepoint As Point = New Point(e.X, e.Y) 
     Chart1.ChartAreas(0).CursorX.Interval = 0 
     Chart1.ChartAreas(0).CursorX.SetCursorPixelPosition(mousepoint, True) 
     Dim result As HitTestResult = Chart1.HitTest(e.X, e.Y) 

     If result.PointIndex > -1 AndAlso result.ChartArea IsNot Nothing Then 
      Me.Chart1.Series("Result").ToolTip = "Value: #VALY{F}mA\nDate: #VALX" 

     End If 
    End Sub 

:これは良いように見えますが、私の問題は私のカーソルが結果シリーズに触れたときに表示されるツールヒントです。もちろんenter image description here

。私がResultシリーズからカーソルを離すと、それは消滅します。シリーズとピクセル位置の線が交差する限り、チャート上にツールチップを表示する方法はありますか?

ありがとうございます。

ここでハリ

+0

コードですが、私は間違っていますか? –

+0

@Zack Raiyan、私はカーソルがシリーズに触れるとき、私はツールヒントを見ることができます。私はカーソルがシリーズに触れていなくてもツールヒントを見たいと思う。 – Hari

+0

'Touch the series' ??これは何を意味するのでしょうか ?あなたはシリーズの上に乗っていることを意味します –

答えて

1

は(C#ではなく、VB.netに翻訳しやすい)の答えです より良い位置に注釈を配置する方法があります。

private void chart1_MouseMove(object sender, MouseEventArgs e) 
    { 
     chart1.Annotations.Clear(); 

     try 
     { 
      ChartArea ca = chart1.ChartAreas[0]; 

      Double y = ca.AxisY.PixelPositionToValue(e.Y); 
      Double x = ca.AxisX.PixelPositionToValue(e.X); 

      if (y < ca.AxisY.Minimum || y > ca.AxisY.Maximum || x < ca.AxisX.Minimum || x > ca.AxisX.Maximum) return; 

      TextAnnotation taX = new TextAnnotation(); 
      taX.Name = "cursorX"; 
      taX.Text = x.ToString("0.##"); 
      taX.X = ca.AxisX.ValueToPosition(x); 
      taX.Y = ca.AxisY.ValueToPosition(y); 

      TextAnnotation taY = new TextAnnotation(); 
      taY.Name = "cursorY"; 
      taY.Text = y.ToString("0.##"); 
      taY.X = ca.AxisX.ValueToPosition(x); 
      taY.Y = ca.AxisY.ValueToPosition(y) + 5; 

      chart1.Annotations.Add(taX); 
      chart1.Annotations.Add(taY); 
     } 
     catch (Exception ex) 
     { 

     } 
    } 
+0

閉じるが、これは私の意図した解決策ではない。イメージを見ると、垂直の赤い線が青のシリーズと交差しているので、カーソルがフォームのどこに置かれていてもその点が表示されます。しかし、私はあなたの方法を試し、私は私の目標を達成できるかどうかを確認するためにいくつかの変更を行います。 – Hari

関連する問題