我需要通过X坐标访问DataPoint
,但我似乎找不到任何解决方案。 HitTest()
已经出局,因为它还需要Y坐标(如果Y为0,则无法点击任何内容)。我知道我可以通过Linq和X坐标选择DataPoints,但我想知道是否有更好的解决方案呢?
更具体地说,我尝试使用TextAnnotation显示烛台数据(Open,Low,High,Close和DateTime),TextAnnotation跟随CursorX(它位于我的X轴上方,位于我的X轴之上,位于在我的图表的底部),我的CursorX是间隔的,所以它总是在蜡烛的中心。
到目前为止,我是一个MouseMove
函数,它更新了我的CursorX
,但缺少数据访问和标签更新:
PointF _mouse = new PointF();
TextAnnotation _mouseLabel;
void UpdateMouseCursor(object sender, MouseEventArgs e)
{
if( _mouseLabel == null )
return;
_mouse.X = e.Location.X;
_mouse.Y = e.Location.Y;
var cursorX = chart1.ChartAreas[0].CursorX;
cursorX.SetCursorPixelPosition( _mouse, true );
_mouseLabel.X = cursorX.Position;
}
CursorX
和_mouseLabel
设置:
public void SetupMouse(double interval, DateTimeIntervalType intervalType)
{
chart1.ChartAreas[0].CursorX.IntervalType = intervalType;
chart1.ChartAreas[0].CursorX.Interval = interval;
chart1.ChartAreas[0].CursorX.LineColor = Color.FromArgb(128, 128,128,128);
if( _mouseLabel == null )
{
_mouseLabel = new TextAnnotation();
_mouseLabel.Text = "WOOHOO!";
_mouseLabel.AnchorY = 85;
_mouseLabel.AxisX = chart1.ChartAreas[0].AxisX;
chart1.Annotations.Add( _mouseLabel );
}
}