C#使用timer1_Tick实时绘制FastLine图表

本文关键字:绘制 FastLine 图表 实时 Tick 使用 timer1 | 更新日期: 2023-09-27 18:27:48

我用C#编码,我有3个变量,每1000ms通过计时器更新一次。我想用这个计时器来绘制一个FastLine图表,显然每1000ms绘制一次新的点。我在一定程度上做到了这一点。它正在绘制计时器所做的每一个刻度,但它只是不断地添加到其中。我只想让它显示之前的20个刻度,而不是过去的2000个刻度,如果程序运行了那么长时间的话。

下面我的时间内图表的代码1_选择方法:

try
{
       chart1.Series[0].Points.AddXY(xaxis++, CPUTemperatureSensor.Value);
       chart1.Series[1].Points.AddXY(xaxis, NvdGPUTemperatureSensor.Value);
       chart1.Series[2].Points.AddXY(xaxis, ramusedpt);
}
catch
{
}

xaxis之前声明为int,不需要显示所有代码,因为rest与无关

C#使用timer1_Tick实时绘制FastLine图表

以下代码是用户jstreet发布的用于解决问题的代码链接到线程和他的评论:如何在图表上添加数据时在图表上移动x轴网格

public partial class Form1 : Form
{
Timer timer;
Random random;
int xaxis;
public Form1()
{
    InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
    random = new Random();
    timer = new Timer();
    timer.Interval = 1000;
    timer.Tick += timer_Tick;
    timer.Start();
}
void timer_Tick(object sender, EventArgs e)
{
    chart1.Series[0].Points.AddXY(xaxis++, random.Next(1, 7));
    if (chart1.Series[0].Points.Count > 10)
    {
        chart1.Series[0].Points.Remove(chart1.Series[0].Points[0]);
        chart1.ChartAreas[0].AxisX.Minimum = chart1.Series[0].Points[0].XValue;
        chart1.ChartAreas[0].AxisX.Maximum = xaxis;
    }
}