仅使用鼠标X坐标获取DataPoint

时间:2016-10-05 08:49:47

标签: c# winforms linq charts

我需要通过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 );
    }
}

视觉效果: enter image description here

0 个答案:

没有答案