这篇文章主要为大家详细介绍了C#动态绘制多条曲线的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了C#动态绘制多条曲线的具体代码,供大家参考,具体内容如下
实时绘制多条曲线,纵轴为数值,横轴为时间,精确到毫秒
实现效果如下:
代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace chartTest
{
public partial class Form1 : Form
{
private int maxSize=20; //图表显示的数据最大数量
private Queue<string> getX = new Queue<string>(); //存储x坐标
private Queue<Int32> getY = new Queue<int>(); //存储y坐标
System.Timers.Timer timer1 = new System.Timers.Timer();
public Form1()
{
InitializeComponent();
}
//获取时间轴横坐标
private string setX()
{
string time = DateTime.Now.ToString("mm:ss.fff");
/* if (getX.Count > 15)
{
getX.Dequeue();
}
else
{
getX.Enqueue(time);
}*/
return time;
}
//获取值 纵坐标
private int setY1()
{
int y = new Random().Next(-100, 0);
/* if (getY.Count > 15)
{
getY.Dequeue();
}
else
{
getY.Enqueue(y);
}*/
return y;
}
private int setY2()
{
int y = new Random().Next(-200, 100);
/* if (getY.Count > 15)
{
getY.Dequeue();
}
else
{
getY.Enqueue(y);
}*/
return y;
}
private int setY3()
{
int y = new Random().Next(100, 300);
/* if (getY.Count > 15)
{
getY.Dequeue();
}
else
{
getY.Enqueue(y);
}*/
return y;
}
private double setY4()
{
double y0 = new Random().Next(100, 300);
double y = y0 * 0.1;
/* if (getY.Count > 15)
{
getY.Dequeue();
}
else
{
getY.Enqueue(y);
}*/
return y;
}
//将坐标点添加进系列进行绘图
private void paint()
{
try
{
//series1
if (chart1.Series[0].Points.Count > maxSize)
{
chart1.Series[0].Points.RemoveAt(0);
chart1.Series[0].Points.AddXY(setX(), setY1());
}
else
{
chart1.Series[0].Points.AddXY(setX(), setY1());
}
//series2
if (chart1.Series[1].Points.Count > maxSize)
{
chart1.Series[1].Points.RemoveAt(0);
chart1.Series[1].Points.AddXY(setX(), setY2());
}
else
{
chart1.Series[1].Points.AddXY(setX(), setY2());
}
//series3
if (chart1.Series[2].Points.Count > maxSize)
{
chart1.Series[2].Points.RemoveAt(0);
chart1.Series[2].Points.AddXY(setX(), setY3());
}
else
{
chart1.Series[2].Points.AddXY(setX(), setY3());
}
//series4
if (chart1.Series[3].Points.Count > maxSize)
{
chart1.Series[3].Points.RemoveAt(0);
chart1.Series[3].Points.AddXY(setX(), setY4());
}
else
{
chart1.Series[3].Points.AddXY(setX(), setY4());
}
}
catch
{ }
}
private void timer2_Tick(object sender, EventArgs e)
{
setX();
setY1();
setY2();
setY3();
setY4();
paint(); //调用画图方法,显示动态折线图
}
private void btn_start_Click(object sender, EventArgs e)
{
if (btn_start.Text.Equals("开始"))
{
btn_start.Text = "停止";
timer2.Enabled = true;
}
else
{
btn_start.Text = "开始";
timer2.Enabled = false;
}
}
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持得得之家。
织梦狗教程
本文标题为:C#动态绘制多条曲线的方法


基础教程推荐
猜你喜欢
- C#通过标签软件Bartender的ZPL命令打印条码 2023-05-16
- Unity shader实现高斯模糊效果 2023-01-16
- C#获取指定目录下某种格式文件集并备份到指定文件夹 2023-05-30
- C#中的Linq to JSON操作详解 2023-06-08
- Unity 如何获取鼠标停留位置下的物体 2023-04-10
- 实例详解C#实现http不同方法的请求 2022-12-26
- C#调用摄像头实现拍照功能的示例代码 2023-03-09
- C#中 Json 序列化去掉null值的方法 2022-11-18
- C# 解析XML和反序列化的示例 2023-04-14
- c# – USING块在网站与Windows窗体中的行为不同 2023-09-20