前言:
大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发winform窗体程序的时候,有时候会往chart控件中添加大量的数据用于显示曲线,当数据太多时,会出现程序界面卡顿甚至软件崩溃的情况,本文就来帮助大家解决这个问题!
1、示例代码
public partial class Form1 : Form
{
List<double> xList = new List<double>();
List<double> yList = new List<double>();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Run();
}
int maxCount = 10;
private void Run()
{
Random random = new Random();
int val = random.Next(0, 1000);//生成随机数
if (yList.Count == maxCount)//判断数量达到上限,则删除一个旧数据
{
yList.RemoveAt(0);
}
yList.Add(val);
GetxList();
UpdateChart();
}
/// <summary>
/// 获取x坐标
/// </summary>
private void GetxList()
{
xList.Clear();
int count = yList.Count;
for (int i = 0; i < count; i++)
{
xList.Add(i + 1);
}
}
/// <summary>
/// 显示曲线
/// </summary>
private void UpdateChart()
{
this.Invoke(new Action(() =>
{
chart1.Series[0].Points.Clear();
chart1.Series[0].Points.DataBindXY(xList, yList);
}));
}
}
2、删旧添新法
该方法的原理就是,我们设置一个显示数据的上限,比如1000,当曲线显示的数据等于1000时,这时又有新的数据需要显示时,我们先删除一定数量的旧数据,然后添加相等数量的新数据,这样保持显示的数据始终保持在1000个,这样我们就能确保控件不会因为需要显示太多数据而卡顿或者崩溃同时控件显示的数据又是最新的。
3、视频讲解
解决显示大量曲线数据卡顿——删旧添新法
年入30万+C#上位机实战必备教程推荐(点击下方链接即可访问文章)
1、《C#串口通信从入门到精通》
2、《C#与PLC通信从入门到精通 》
3、《C# Modbus通信从入门到精通》
4、《C#Socket通信从入门到精通 》
5、《C# MES通信从入门到精通》
6、《winform控件从入门到精通》
7、《C#操作MySql数据库从入门到精通》