在 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
事件中。
我正在使用 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
事件中。