Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 图表控制X轴不断增长,它看起来好像没有移动_C#_Charts - Fatal编程技术网

C# 图表控制X轴不断增长,它看起来好像没有移动

C# 图表控制X轴不断增长,它看起来好像没有移动,c#,charts,C#,Charts,我有一个带有实时图表控件的应用程序,它接收日期并在我的控件上显示: MyObject obj... Series series = new Series(); series.Color = Color.Blue; series.ChartType = SeriesChartType.Spline; series.BorderWidth = 2; chart1.Series.Add(series); chart1.ChartAreas[0].AxisX.MajorGrid.LineColor =

我有一个带有实时图表控件的应用程序,它接收日期并在我的控件上显示:

MyObject obj...

Series series = new Series();
series.Color = Color.Blue;
series.ChartType = SeriesChartType.Spline;
series.BorderWidth = 2;
chart1.Series.Add(series);
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.White;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.White;
chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Number
;
这是我的控制:

MyObject obj...

Series series = new Series();
series.Color = Color.Blue;
series.ChartType = SeriesChartType.Spline;
series.BorderWidth = 2;
chart1.Series.Add(series);
chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = Color.White;
chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = Color.White;
chart1.ChartAreas[0].AxisX.IsStartedFromZero = true;
chart1.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Number
;
计时器滴答声:

private void chartTimer_Tick(object sender, EventArgs e)
{
        series.Points.Add(wf.BitsPerSecond * 0.000001);
        chart1.ResetAutoValues();
}
我的问题是,在开始时,这是一个图表:

几分钟后,X轴不断增长,图形似乎停止移动:


如何确保我的图表从一开始就显示出来?

您一直在向图表中添加点,但永远不要删除它们。因此,当您调用
chart.ResetAutoValues()
时,它会将x轴上的最小值设置为低于第一个点的x值,将最大值设置为高于(或等于)最后一个点的x值。最大值不断变大,但最小值从未改变,因此随着时间的推移,图形看起来会被压缩。一旦达到某个阈值,就可以开始删除点,如下所示:

private void chartTimer_Tick(object sender, EventArgs e)
{
    if (series.Points.Count() > 1000) series.Points.RemoveAt(0);
    series.Points.Add(wf.BitsPerSecond * 0.000001);
    chart1.ResetAutoValues();
}

但同样通过这种方式,我可以看到X轴仍然在增长,最小值和最大值仍然会增长,因为你一直在添加点。一旦你达到一个稳定状态,最小值和最大值之间的差异就不会增大(你总是会看到1000个点的数据),那么我应该做些什么来改变这个图,使它保持在初始状态?我不确定你现在说的“初始状态”是什么意思。我的意思是像我添加的第一张图片一样