这篇文章主要为大家详细介绍了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# List实现行转列的通用方案 2022-11-02
- winform把Office转成PDF文件 2023-06-14
- unity实现动态排行榜 2023-04-27
- C#类和结构详解 2023-05-30
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- C# 调用WebService的方法 2023-03-09
- ZooKeeper的安装及部署教程 2023-01-22
- C#控制台实现飞行棋小游戏 2023-04-22
- 一个读写csv文件的C#类 2022-11-06
- C# windows语音识别与朗读实例 2023-04-27