这篇文章主要为大家详细介绍了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#动态绘制多条曲线的方法


猜你喜欢
- Unity Shader实现模糊效果 2023-04-27
- WPF使用DrawingContext实现绘制刻度条 2023-07-04
- C# 使用Aspose.Cells 导出Excel的步骤及问题记录 2023-05-16
- c# 模拟线性回归的示例 2023-03-14
- .NET CORE DI 依赖注入 2023-09-27
- user32.dll 函数说明小结 2022-12-26
- 如何使用C# 捕获进程输出 2023-03-10
- Unity3D实现渐变颜色效果 2023-01-16
- Oracle中for循环的使用方法 2023-07-04
- 在C# 8中如何使用默认接口方法详解 2023-03-29