2017-12-21 49 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

. 결과 시리즈에서 커서를 옮기면 사라집니다. 시리즈와 픽셀 위치 행 사이에 교차가있는 한 차트에 도구 설명을 표시하는 방법이 있습니까?

고마워요. 여기 하리

+0

코드 .. 뭐가 잘못 되었나요? –

+0

@Zack Raiyan, 커서가 시리즈에 닿으면 도구 설명 만 볼 수 있습니다. 내 커서가 시리즈를 만지지 않더라도 툴팁을보고 싶습니다. – Hari

+0

'시리즈 터치'?? 이것은 무엇을 의미 하는가 ? u는 시리즈 –

답변

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