这篇文章主要为大家详细介绍了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#通过GET/POST方式发送Http请求 2023-04-28
- Unity shader实现多光源漫反射以及阴影 2023-03-04
- c#读取XML多级子节点 2022-11-05
- C#中类与接口的区别讲解 2023-06-04
- C# Winform实现石头剪刀布游戏 2023-01-11
- 京东联盟C#接口测试示例分享 2022-12-02
- c#中利用Tu Share获取股票交易信息 2023-03-03
- C# – NetUseAdd来自Windows Server 2008和IIS7上的NetApi32.dll 2023-09-20
- 使用c#从分隔文本文件中插入SQL Server表中的批量数据 2023-11-24
- C#集合查询Linq在项目中使用详解 2023-06-09