通过鼠标单击获取系列值

时间:2013-12-10 11:08:02

标签: c# mschart

我使用Microsoft.DataVisualization.Charting并希望在点击它时获取该点的值。

我的问题:我希望完全我点击的那个值,即使它只是图表计算的值和2点之间的值。

示例:3分:P(0; 3),P(1; 6),P(3; 12)

当我点击x值2时,如果线是线性的,我希望得到9。

目前我这样做:

            HitTestResult[] hits = chart.HitTest(e.X, e.Y, false, ChartElementType.PlottingArea);

            //DataInformation save the DateTime and Value for later use
            DataInformation[] dinfo = new DataInformation[hits.Length];

            foreach (ChartArea area in chart.ChartAreas)
            {
                area.CursorX.LineWidth = 0; //clear old lines
            }

            for (int i = 0; i < hits.Length; i++) //for all hits
            {
                if (hits[i].ChartElementType == ChartElementType.PlottingArea)
                {
                    //val saves the x-value clicked in the ChartArea
                    double val = hits[i].ChartArea.AxisX.PixelPositionToValue(e.X);
                    DataPoint pt = chart.Series[hits[i].ChartArea.Name].Points.Last(elem => elem.XValue < val);

                    dinfo[i].caption = hits[i].ChartArea.Name;
                    dinfo[i].value = pt.YValues[0].ToString();

                    //hits[i].ChartArea.CursorX.Position = pt.XValue;
                }
            }

这会显示每个现有数据点的正确值,但不会显示点击点。

我怎样才能得到确切的值?

1 个答案:

答案 0 :(得分:0)

看来,没有办法获得确切的价值。我改为OxyPlot。 OxyPlot可以更快地显示数据,您可以获得任何点的确切值。