在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 实时数据图表相关推荐

  1. VS2013 TeeChart_v5 MFC C++ 使用手册干货(三)TeeChart ColorGrid类的简单使用

    前面几步安装上面两节进行 1.注册TeeChart5 2.VS添加TeeChart控件并添加变量 3.添加所需类 ColorGrid绘制示例:此方法只适用于TeeChart_v5 VS2010, 在C ...

  2. VS2013 简单MFC应用以及teechart使用方法

    目录 内容 1.teechart安装注册 2.建一个MFC应用程序 1.新建 2.对话框设计 添加teechart 添加按钮 3.添加chart类 4.添加teechart控件变量 5.添加处理代码 ...

  3. 《离线和实时大数据开发实战》(二)大数据平台架构 技术概览

    前言 接着上一章 构建大数据开发知识体系图谱,本次继续分享邦中老师的<离线和实时大数据开发实战>读书笔记 .到底什么样的平台才能算是大数据平台呢?带着这个问题,我们开始今天的内容 ( •̀ ...

  4. MFC六大核心机制之二:运行时类型识别(RTTI)

    上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...

  5. 《MFC游戏开发》笔记二 建立工程、调整窗口

    本系列文章由七十一雾央编写,转载请注明出处. http://blog.csdn.net/u011371356/article/details/9300383 作者:七十一雾央 新浪微博:http:// ...

  6. VS2013在MFC中使用ADO方法操作Access2013数据库

    1. 首先创建一个基于对话框的MFC应用程序ADO_ACCESS.sln.然后在stdafx.h头文件末尾添加(网上有说在某个#include后面的添加的,也有说在合适位置添加的,我这里直接添加在最末 ...

  7. VS2013用MFC操作64位access 2013

    编译环境为64win10操作系统下VS2013,access为64位Office 2013,但是安装了access 2010的数据库引擎可再发行程序包. 最近在用MFC做一个上位机可以程控仪器和模块将 ...

  8. 超全万字汇总!科研论文绘图实操干货!11类Matplotlib图表,含代码

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 导读 Matplotlib 是一个 Python 的 2D绘图库, ...

  9. 干货 | 从零进阶数据分析学习资料汇总(限时福利)

    据麦肯锡权威数据报告显示:到2025年中国数据人才缺口或将达到220万.中国商委会数据分析部的统计显示:未来中国基础性数据分析人才的缺口将达到1000万+. 如果你是想要入门数据分析的同学: 如果你还 ...

最新文章

  1. 计算机视觉(AI)的算法有哪些,具体都有哪些特点?
  2. linux 编程博客,Linux系统编程博客参考
  3. 成功创业者必须具备的9个特质
  4. 什么是泛型、为什么要使用以及泛型擦除
  5. 查漏补缺!这份 VUE 学习知识总结请注意查收! | 原力计划
  6. web app iphone4 iphone5 iphone6 iphone6 Plus响应式布局 适配代码
  7. 不等缓和曲线计算公式及坐标?
  8. pr控制C语言程序,PR控制(含代码)
  9. c fflush函数
  10. 智能音箱音效哪个好_四大智能音箱,你觉得哪个才是最好用的?
  11. coxphfit+matlab,计算Cox比例风险模型的coxph和cph函数有什么区别?
  12. 多线程的终止方法(停止线程)
  13. 期刊列表及发表文章的相关事项
  14. 求C语言+MySQL数据库项目
  15. TEB算法2-teb参数说明及调试小记
  16. 难道爱一个人有错吗 郑源
  17. 向面前的第一座山进军!!!
  18. 【机器人学】基于PoE模型的串联机械臂UR5的正运动学、微分运动学和逆运动学
  19. DotCMS中文教程
  20. 使用PicGo+阿里云OSS实现md文档图片上传

热门文章

  1. 《眨眼之见》、机器学习、名教与刑名学
  2. Delphi OLE方法操作Excel
  3. Vue选项之extends扩展
  4. SpringMVC学习篇(二)
  5. 使用javaparser分析重构java源码
  6. altera_reserved_tck的问题
  7. python 加速csv读取速度_csv读慢python的速度
  8. 李沐——动手学深度学习课后练习calculus
  9. 乾坤未定 你我皆是黑马 | 猿代码
  10. Vulkan 交换链详解