VS2013 TeeChart_v5 MFC C++ 使用手册干货(二)TeeChart 实时数据图表
在MFC中,要想用TeeChart实现对数据的实时可视化,则需要借助c++中的定时器。关于定时器的具体内容可以在鸡啄米的MFC教程中查看(感谢大神,同时鸡啄米的MFC入门教程也非常棒!我也是看他入得门):
鸡啄米MFC常用类:c++定时器
那么下面直接上东西了:
首先当然是按照上一篇文章中的方法添加TeeChart以及引入相关类,然后需要两部来实现数据显示的实时化。
一、为MFC添加定时器消息处理函数
选择项目,类向导,然后选择自己的对话框类,选择消息,找到定时器消息WM_TIMER,点击添加处理程序,
出现OnTimer后点击确定。
完成之后再对话框类中应该可以看到如下代码
void CBULABULADlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值CDialogEx::OnTimer(nIDEvent);
}
到这里就完成了Timer定时器消息处理函数的添加
二、写入实时数据显示程序
1.在界面上添加一个按钮Start,IDC_BUTTONSTART。
2.在按钮的消息处理函数中写入以下代码
void CBULABULADlg::OnBnClickedButtonstrat()
{SetTimer(1,1000,NULL);//SetTimer(定时器标识符 , 定时器间隔(ms) , 定时器回调函数)
}
3.在ontimer中写入绘图函数
void CBULABULADlg::OnTimer(UINT_PTR nIDEvent)
{// TODO: 在此添加消息处理程序代码和/或调用默认值switch (nIDEvent){case 1: //定时器1从这里开始执行,当有多个定时器时,根据不同的定时器标识可以使其执行不同的任务{CSeries my_series = m_chart.Series(0); //此处为刚刚添加的series序号my_series.Clear(); //清除上一次的图线srand((unsigned)time(NULL)); //设置随机数种子double y; //y坐标for (int x = 0; x < 100; x++) //画100个点{ //如果需要实时显示采集到的数据,那么把得到的//数据与x,y做替换y = rand() % 100; // y = 随机数my_series.AddXY(x, y, NULL, NULL); //添加点到图线}break;}}CDialogEx::OnTimer(nIDEvent);
}
这就是使用Timer定时器实现实时绘图的方法了。
一般这种程序多用于数据采集程序的实时可视化,因此在这里提出一点补充,即对于大数据量下的数据实时绘制方法
1.图表设置上的方法
双击teechart图表,选择Series选项卡,选择你的图线(这里是Series0),把DrawAll的钩去掉。这样Teechart就会在不改变图线形状的情况下自动减少绘制点数,从而加快绘图。
2.调用AddArray函数绘制
Teechart提供了AddArray函数以应对大数据量情况下的绘图,AddArray的函数声明如下
void AddArray(long ArraySize, VARIANT& YArray, VARIANT& XArray);
从左到右的参数分别为绘制点数,y坐标序列,x坐标序列
使用的方法为:
void CxxxDlg::TeeChartPaint(int order, double dData[]) //order为想要绘制的图线的序号, dData[]为存储了y值的数组
{ COleSafeArray XValues;COleSafeArray YValues;int nDATALENGTH = 10000; //绘制点数DWORD numElements[] = { nDATALENGTH };// Create a safe array XValues.Create(VT_R8, 1, numElements);YValues.Create(VT_R8, 1, numElements);// Initialization long i;double dval;for (i = 0; i<nDATALENGTH; i++){dval = i;XValues.PutElement(&i, &dval);dval = dData[i];YValues.PutElement(&i, &dval);//YValues.PutElement(&i, dData+i); };CSeries lineSeries = (CSeries)m_tchart.Series(order);lineSeries.Clear();lineSeries.AddArray(nDATALENGTH, YValues, XValues);
}
VS2013 TeeChart_v5 MFC C++ 使用手册干货(二)TeeChart 实时数据图表相关推荐
- VS2013 TeeChart_v5 MFC C++ 使用手册干货(三)TeeChart ColorGrid类的简单使用
前面几步安装上面两节进行 1.注册TeeChart5 2.VS添加TeeChart控件并添加变量 3.添加所需类 ColorGrid绘制示例:此方法只适用于TeeChart_v5 VS2010, 在C ...
- VS2013 简单MFC应用以及teechart使用方法
目录 内容 1.teechart安装注册 2.建一个MFC应用程序 1.新建 2.对话框设计 添加teechart 添加按钮 3.添加chart类 4.添加teechart控件变量 5.添加处理代码 ...
- 《离线和实时大数据开发实战》(二)大数据平台架构 技术概览
前言 接着上一章 构建大数据开发知识体系图谱,本次继续分享邦中老师的<离线和实时大数据开发实战>读书笔记 .到底什么样的平台才能算是大数据平台呢?带着这个问题,我们开始今天的内容 ( •̀ ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- 《MFC游戏开发》笔记二 建立工程、调整窗口
本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:// ...
- VS2013在MFC中使用ADO方法操作Access2013数据库
1. 首先创建一个基于对话框的MFC应用程序ADO_ACCESS.sln.然后在stdafx.h头文件末尾添加(网上有说在某个#include后面的添加的,也有说在合适位置添加的,我这里直接添加在最末 ...
- VS2013用MFC操作64位access 2013
编译环境为64win10操作系统下VS2013,access为64位Office 2013,但是安装了access 2010的数据库引擎可再发行程序包. 最近在用MFC做一个上位机可以程控仪器和模块将 ...
- 超全万字汇总!科研论文绘图实操干货!11类Matplotlib图表,含代码
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 Matplotlib 是一个 Python 的 2D绘图库, ...
- 干货 | 从零进阶数据分析学习资料汇总(限时福利)
据麦肯锡权威数据报告显示:到2025年中国数据人才缺口或将达到220万.中国商委会数据分析部的统计显示:未来中国基础性数据分析人才的缺口将达到1000万+. 如果你是想要入门数据分析的同学: 如果你还 ...
最新文章
- .NET程序脱离.NET Framework 运行之道
- 运用PFA的路灯指示牌GUI程序
- android ImageButton设置背景图片无法显示
- 诺奖经济学家:中国与世界可找到差异化空间推动合作共赢
- 深圳学位分数计算机,深圳10区小一初一录取分数线汇总 附积分自测入口
- 《Java程序设计》第四次学习总结
- VC++工程配置的大体流程 看图说话
- java语言程序设计考题_《JAVA语言程序设计》期末考试试题及答案6(应考必备题库)...
- iphone4 通讯录数据库文件!
- @RequestBody 接收数组、List 参数、@Deprecated 标记废弃方法
- VS2005 安装WTL
- python的运行机制是什么_Python 程序运行机制
- java导出excel包含图片
- SpringBoot 接口数据加解密实战
- cocos创建九宫格图片
- java-php-python-ssm“花花世界”网站计算机毕业设计
- 训练日志13 (8.7)
- 加入美人联盟,一起创造App增长新生态
- jsp+ssm计算机毕业设计宠物寻回系统【附源码】
- 测试中缺陷的管理流程