一个SeriesPoint是由一个X坐标值和一个Y坐标值构成的,只要取得这个SeriesPoint就可以了。

解决方案 »

  1.   

    是介于两个SeriesPoint之间的值,怎么取?
      

  2.   

    两个SeriesPoint之间的话,X就没有特定的值啊,怎么根据X的值取Y的值。
      

  3.   


    可以取到特定的值,如果这样设置,就能在ChartAreaS上看到一个十字线,从这个十字线上就可以同时取到X和Y的值。但我只想获得两个Series与红线交叉点的对应值。chart.ChartAreas[0].CursorX.IsUserEnabled = true;
    chart.ChartAreas[0].CursorY.IsUserEnabled = true;
      

  4.   

    已经搞定,下面是代码:        /// <summary>
            /// Set Cursor Position to Edit control.
            /// </summary>
            /// <param name="e"></param>
            /// <param name="axis"></param>
            /// <param name="position"></param>
            private void SetPosition(CursorEventArgs e, Axis axis, double position)
            {
                if (double.IsNaN(position))
                {
                    return;
                }            if (axis.AxisName == AxisName.X)
                {
                    RefreshBoilerAndHeat();                DateTime dateTimeX = DateTime.FromOADate(position);
                    this._chartControl.labInfo.Text = "时间: " + dateTimeX.ToString("yyyy-MM-dd HH:mm:ss") + "\n\n";                for (int i = 0; i < this._chartControl.chart.Series.Count; i++ )
                    {
                        Series series = this._chartControl.chart.Series[i];
                        DataPoint lastPoint = null;
                        DataPoint nextPoint = null;
                            
                        for (int j = 0; j < series.Points.Count; j++)
                        {
                            DataPoint point = series.Points[j];
                            DateTime pointDateTime = DateTime.FromOADate(point.XValue);
                            TimeSpan ts = new TimeSpan();
                            ts = dateTimeX - pointDateTime;
                            if ((ts.TotalSeconds < 0 && j==0) || (ts.TotalSeconds >0 && j+1 == series.Points.Count))
                            {
                                break;
                            }                        if (ts.TotalSeconds < 0)
                            {
                                lastPoint = series.Points[j - 1];
                                nextPoint = point;
                                break;
                            }
                        }                    if (lastPoint == null && nextPoint == null)
                        {
                            this._chartControl.labInfo.Text = "时间:" + dateTimeX.ToString("yyyy-MM-dd HH:mm:ss") + "\n\n数值:";
                            break;
                        }
                        else
                        {
                            double diff = (nextPoint.YValues[0] - lastPoint.YValues[0]) / (nextPoint.XValue - lastPoint.XValue);
                            double yValue = diff * position - diff * lastPoint.XValue + lastPoint.YValues[0];
                            this._chartControl.labInfo.Text += series.Name + ": " + Math.Round(yValue,1).ToString() + "\n\n";
                        }
                    }
                }
            }
      

  5.   


    DateTime dateTimeX = DateTime.FromOADate(position);
    为什么能根据position拿到时间啊   能讲下原理吗   谢谢
      

  6.   

    我也遇到了,mousemove里怎么通过e.x获取到横坐标的值···
      

  7.   

    像素值转用户值
    double yValue = chart_xxx.ChartAreas[x].AxisY.PixelPositionToValue(e.Y);