在 MS Chart 的缩放视图上获取点数

Get points on a zoomed view on MS Chart

我正在使用 Microsoft Chart 控件并允许用户选择。 一旦用户选择要缩放的区域,我希望能够获取当前缩放(查看)区域的数据点。关于如何做到这一点的任何想法?我正在使用 .Net 4.5。

这是一个将当前可见的 DataPoints 发送到控制台输出的示例:

// two shortcuts
ChartArea CA = chart1.ChartAreas[0];
Series S = chart1.Series[0];

// these are the X-Values of the zoomed portion:
double min = CA.AxisX.ScaleView.ViewMinimum;
double max = CA.AxisX.ScaleView.ViewMaximum;

// these are the respective DataPoints:
    DataPoint pt0 = S.Points.Select(x => x)
                     .Where(x => x.XValue >= min)
                     .DefaultIfEmpty(S.Points.First()).First();
    DataPoint pt1 = S.Points.Select(x => x)
                     .Where(x => x.XValue <= max)
                     .DefaultIfEmpty(S.Points.Last()).Last();

// test output:
for (int i = S.Points.IndexOf(pt0); i < S.Points.IndexOf(pt1); i++)
    Console.WriteLine(i + " :  " + S.Points[i]);

您可以将它放在 SelectionRangeChanged 事件中。