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

时间:2015-12-22 15:22:58

标签: c# plot charts

我在C#编码,我有3个变量,每隔1000毫秒通过我的计时器更新。 我想使用这个计时器来创建一个FastLine图表,显示每1000毫秒绘制一个新点。 我在一定程度上有这个工作。 它正在绘制计时器所做的每个滴答,但它只是不断添加它我只希望它显示前20个图,而不是过去的2000如果程序运行那么久。

我的timer1_Tick方法中的图表代码如下:

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是无关紧要的

1 个答案:

答案 0 :(得分:1)

下面的代码是由用户jstreet发布的用于解决问题的内容 链接到线程和他的评论: How to move x-axis grids on chart whenever a data is added on the chart

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;
    }
}