ZedGraph实时曲线实例
2010-10-17 11:23:58| 分类: ASP.NET |举报|字号 订阅
public partial class FrmMain : Form
    {
        // 起始时间以毫秒为单位
        int tickStart = 0;
public FrmMain()
        {
            InitializeComponent();
            this.timeDraw.Tick += new EventHandler(timeDraw_Tick);
        }
private void FrmMain_Load(object sender, EventArgs e)
        {
            //获取引用
            GraphPane myPane = zedGraphControl1.GraphPane;
            //设置标题
            myPane.Title.Text = "实时曲线";
            //设置X轴说明文字
            myPane.XAxis.Title.Text = "时间";
            //设置Y轴说明文字
            myPane.YAxis.Title.Text = "温度";
//设置1200个点,假设每50毫秒更新一次,刚好检测1分钟,一旦构造后将不能更改这个值
            RollingPointPairList list = new RollingPointPairList(1200);
//开始,增加的线是没有数据点的(也就是list为空)
            //增加一条名称:Voltage,颜色Color.Bule,无符号,无数据的空线条
            LineItem curve = myPane.AddCurve("温度", list, Color.Blue, SymbolType.None);
timeDraw.Interval = 50;        //设置timer控件的间隔为50毫秒
            timeDraw.Enabled = true;    //timer可用
            timeDraw.Start();            //开始
myPane.XAxis.Scale.Min = 0;        //X轴最小值0
            myPane.XAxis.Scale.Max = 30;    //X轴最大30
            myPane.XAxis.Scale.MinorStep = 1;//X轴小步长1,也就是小间隔
            myPane.XAxis.Scale.MajorStep = 5;//X轴大步长为5,也就是显示文字的大间隔
//改变轴的刻度
            zedGraphControl1.AxisChange();
//保存开始时间
            tickStart = Environment.TickCount;
        }
private void timeDraw_Tick(object sender, EventArgs e)
        {
            //确保CurveList不为空
            if (zedGraphControl1.GraphPane.CurveList.Count <= 0)
            {
                return;
            }
//取Graph第一个曲线,也就是第一步:在GraphPane.CurveList集合中查找CurveItem
            LineItem curve = zedGraphControl1.GraphPane.CurveList[0] as LineItem;
            if (curve == null)
            {
                return;
            }
//第二步:在CurveItem中访问PointPairList(或者其它的IPointList),根据自己的需要增加新数据或修改已存在的数据
            IPointListEdit list = curve.Points as IPointListEdit;
if (list == null)
            {
                return;
            }
// 时间用秒表示
            double time = (Environment.TickCount - tickStart) / 1000.0;
            // 3秒循环
            list.Add(time, Math.Sin(2.0 * Math.PI * time / 3.0));
            Console.WriteLine(time.ToString());
Scale xScale = zedGraphControl1.GraphPane.XAxis.Scale;
            if (time > xScale.Max - xScale.MajorStep)
            {
                xScale.Max = time + xScale.MajorStep;
                xScale.Min = xScale.Max - 30.0;
            }
//第三步:调用ZedGraphControl.AxisChange()方法更新X和Y轴的范围
            zedGraphControl1.AxisChange();
//第四步:调用Form.Invalidate()方法更新图表
            zedGraphControl1.Invalidate();
        }
private void Form1_Resize(object sender, EventArgs e)
        {
            SetSize();
        }
private void SetSize()
        {
            // 控制始终是以10像素插入矩形从客户端的形
            Rectangle formRect = this.ClientRectangle;
            formRect.Inflate(-10, -10);
if (zedGraphControl1.Size != formRect.Size)
            {
                zedGraphControl1.Location = formRect.Location;
                zedGraphControl1.Size = formRect.Size;
            }
        }
}
ZedGraph实时曲线实例的更多相关文章
- C# ZedGraph实时多条曲线数据更新实例
		
C# ZedGraph实时多条曲线数据更新实例 先看展示效果 1.创建曲线实例添加必要的元素 public class LineChannel { public LineChannel(int id, ...
 - js监听input输入框值的实时变化实例
		
情景:监听input输入框值的实时变化实例 解决方法:1.在元素上同时绑定oninput和onporpertychanger事件 实例:<script type="text/JavaS ...
 - C# 曲线控件 曲线绘制 实时曲线 多曲线控件 开发
		
Prepare 本文将使用一个NuGet公开的组件来实现曲线的显示,包含了多种显示的模式和配置来满足各种不同的应用场景,方便大家进行快速的开发系统. 在Visual Studio 中的NuGet管理器 ...
 - ZedGraph的曲线的LineItem对象的Tag属性存储信息进而在鼠标悬浮时进行显示
		
场景 Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
 - Winform中设置ZedGraph的曲线为散点图
		
场景 Winform中设置ZedGraph的曲线符号Symbol以及对应关系: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
 - Winform中设置ZedGraph的曲线为折线、点折线、散点图
		
场景 Winform中设置ZedGraph的曲线为散点图: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/102465399 在上 ...
 - YOLACT : 首个实时one-stage实例分割模型,29.8mAP/33.5fps | ICCV 2019
		
论文巧妙地基于one-stage目标检测算法提出实时实例分割算法YOLACT,整体的架构设计十分轻量,在速度和效果上面达到很好的trade-off. 来源:[晓飞的算法工程笔记] 公众号 论文: ...
 - 学习Qt Charts - 实时曲线
		
1.添加坐标轴 按照之前的一篇文章,先在工程中添加QChart.QChartView,代码如下: Dialog::Dialog(QWidget *parent) : QDialog(parent), ...
 - Winform中对ZedGraph的曲线标签进行设置,比如去掉标签边框
		
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
 
随机推荐
- 非[无]root权限 服务器 下安装perl以及perl模块--转载
			
转载自http://www.zilhua.com 在本博客中,所有的软件安装都在服务器上,且无root权限.理论上适合所有的用户. 我的安装目录 cd /home/zilhua/software 1. ...
 - UOJ【UR #12】实验室外的攻防战
			
题意: 给出一个排列$A$,问是否能够经过以下若干次变换变为排列$B$ 变换:若${A_i> A_i+1}$,可以${swap(A_i,A_i+1)}$ 考虑一个数字从A排列到B排列连出来的路径 ...
 - Ubuntu下配置JDK
			
1. 首先你需要到oracle官网下载最新版本的JDK.跑到oracle官网,自己到Download下面找找吧 2.转到下载路径,对下载后的文件解压缩,比如我下载的文件名为jdk-7u7-linux- ...
 - Qt5_程序发布
			
ZC: deploy ==> 部署 1.文件夹platforms 该文件夹 来自 Qt安装目录:F:\ZC_software_installDir\Qt5.3.2_vs2010\5.3\msvc ...
 - JSONP跨域后回调函数中的参数使用
			
有关于跨域的解决方案网上的资源十分丰富,我是参考这个博主的:https://blog.csdn.net/u014607184/article/details/52027879: 这里的response ...
 - 《剑指offer》第三十六题(二叉搜索树与双向链表)
			
// 面试题36:二叉搜索树与双向链表 // 题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求 // 不能创建任何新的结点,只能调整树中结点指针的指向. #include < ...
 - Android JNI学习(四)——JNI的常用方法的中文API
			
本系列文章如下: Android JNI(一)——NDK与JNI基础 Android JNI学习(二)——实战JNI之“hello world” Android JNI学习(三)——Java与Nati ...
 - hdu 5724-Chess(状态压缩+sg函数)
			
hdu 5724-Chess 代码: #include<bits/stdc++.h> using namespace std; ; <<N]; bool S[N]; void ...
 - bartender学习
			
参考: 官网 https://www.seagullscientific.com/label-software/barcode-label-design-and-printing 文章 http:/ ...
 - 关于C和C++
			
最开始学的就是C和C++,但只是学过,根本就不知道怎么使用. 后来接触了Python和Perl才知道怎么将编程应用于实际需求当中,读取文件,存放到数据结构,处理,输出. 但脚本语言有其固有的缺点,不能 ...