我的问题是,每当我在图表上加一个点,它就会压缩所有的点。相反,我想让它自动滚动。
这里有两个.gifs来解释我的问题
我现在拥有的

我想要实现的

我现在的代码是
DateTime dt;
private void Form1_Load(object sender, EventArgs e)
{
timer1.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
dt = DateTime.Now;
if (checkBox1.Checked)
{
chart1.Series["Light"].Points.AddXY(dt.ToShortTimeString(), 1);
}
else
{
chart1.Series["Light"].Points.AddXY(dt.ToShortTimeString(), 0);
}
}发布于 2018-04-28 14:00:39
你可以选择:
Minimum和Maximum值。ScaleView第一个选项很简单,并将保持DataPoints数不变。这可能是好的,也可能是坏的,取决于你的需要。
其他两个将保持收集的点数,只有潘在图表中。
常见参考资料:
ChartArea ca = chart.ChartAreas[0];
Series s = chart.Series[0];下面是第一个选项的代码:
s.Points.AddXY(..);
s.Points.RemoveAt(0);
ca.AxisX.Minimum = double.NaN;
ca.AxisX.Maximum = double.NaN;
ca.RecalculateAxesScale();以下是选项2的代码:
int ix = s.Points.AddXY(..);
ca.AxisX.Maximum = s.Points[ix].XValue;
ca.AxisX.Minimum += s.Points[ix].XValue - s.Points[ix-1].XValue;
ca.RecalculateAxesScale();以下是选项3的代码:
int ix = s.Points.AddXY(..);
ca.AxisX.Minimum = double.NaN;
ca.AxisX.Maximum = double.NaN;
ca.RecalculateAxesScale();
ca.AxisX.ScaleView.Zoom(s.Points[ix-pointMax ].XValue, s.Points[ix].XValue );这假设在本系列中已经存在pointMax点。
所有的例子都假设你已经有了几点。选项1和3还假定没有设置x轴的Minimum或Maximum,即它们是double.NaN。
最后一个选项将允许您方便地滚动数据。
第一种方法使数据点数保持在较低的水平,但除了最后一点外,它失去了所有数据点。
让我们看看工作中的所有选项:

请注意,选项2和3也假定您有有效的x-值。如果没有,则需要对x轴进行索引,并使用点索引而不是值。
https://stackoverflow.com/questions/50076045
复制相似问题