VC++ MFC利用ChartCtrl快速实现波形显示

在网上找了很多ChartCtrl例子,感觉举的都很复杂,而且还有很多搭建出来编译不过,自己还是要mark一下,以备后查。

分享源码:点我下载

1、创建MFC简单工程,将ChartCtrl源码添加到工程文件下,新建筛选器ChartCtrl。

2、将源码导入对应的新建筛选器:

3、添加自定义控件“CustomCtrl”,并修改style 、class、ID值

4、在xxDlg.cpp文件中加入引用的头文件路径:

#include "ChartCtrl\ChartCtrl.h"

5、打开资源界面,右击custom控件选择“添加变量”

点击运行,创建框架成功:

7、初始化并创建坐标轴显示范围

//初始化显示的区域大小
#define DATA_SHOW_X_AXIS	20000   //X轴显示的点最大值
#define DATA_SHOW_Y_AXIS	10000   //Y轴显示的点最大值
//初始化画图界面窗口
void CmyApplicationDlg::ChartCtrlInit(void) {
	///显示主题/
	m_ChartCtrl.GetTitle()->AddString(_T("采样信号波形"));
	///创建坐标xy标识/
	//m_ChartCtrl.GetBottomAxis()->GetLabel()->SetText(_T("强度"));
	//m_ChartCtrl.GetLeftAxis()->GetLabel()->SetText(_T("采样点"));
	///创建坐标显示范围/
	CChartAxis *pAxis = NULL;
	pAxis = m_ChartCtrl.CreateStandardAxis(CChartCtrl::BottomAxis);
	pAxis->SetMinMax(0, DATA_SHOW_X_AXIS);
	pAxis = m_ChartCtrl.CreateStandardAxis(CChartCtrl::LeftAxis);
	pAxis->SetMinMax(0, DATA_SHOW_Y_AXIS);
}

添加定时器,并初始化显示缓冲buff:

//初始化显示的区域大小
#define DATA_SHOW_LENGHT	20000	//总共显示的点个数
#define DATA_UPDATE_LENGHT	1000    //每次更新的点个数
#define DATA_SHOW_X_AXIS	20000   //X轴显示的点最大值
#define DATA_SHOW_Y_AXIS	10000   //Y轴显示的点最大值
//要显示点的缓冲数据
static double xBuff[DATA_SHOW_LENGHT], yBuff[DATA_SHOW_LENGHT];
//显示点数据包初始化
void CmyApplicationDlg::DataBuffInit(void)
{
	for (int i = 0; i < DATA_SHOW_LENGHT; i++) {
		xBuff[i] = i;
		yBuff[i] = cos((i)) * 10 + 50;
	}
}
// CmyApplicationDlg 消息处理程序
BOOL CmyApplicationDlg::OnInitDialog()
{
    //...窗口初始化。。。
    // TODO: 在此添加额外的初始化代码
    DataBuffInit();
    ChartCtrlInit();
    return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

8、添加显示函数和定时器

void CmyApplicationDlg::DataShow(double *xb, double *yb, int len) {
	m_ChartCtrl.EnableRefresh(false);
	CChartLineSerie *pLineSerie;
	m_ChartCtrl.RemoveAllSeries();
	pLineSerie = m_ChartCtrl.CreateLineSerie();
	pLineSerie->SetSeriesOrdering(poNoOrdering);//设置为无序
	pLineSerie->AddPoints(xb, yb, len);
	UpdateWindow();
	m_ChartCtrl.EnableRefresh(true);
}
void CmyApplicationDlg::OnTimer(UINT nIDEvent) {
	static int offset = 0;
	for (int m = 0; m < DATA_SHOW_LENGHT - DATA_UPDATE_LENGHT; m++)
	{
		//xd[m] = xd[DATA_UPDATE_LENGHT + m];
		yBuff[m] = yBuff[DATA_UPDATE_LENGHT + m];
	}
	int index = DATA_SHOW_LENGHT - DATA_UPDATE_LENGHT;
	for (int i = 0; i<DATA_UPDATE_LENGHT; i++)
	{
		//yd[index + i] = cos((index + i + w)/5) * 50 + 100+rand() / 1000;
		yBuff[index + i] = cos((i+offset)/5) * DATA_SHOW_Y_AXIS/4 + rand()/1000+ DATA_SHOW_Y_AXIS / 2;
	}
	DataShow(xBuff, yBuff, DATA_SHOW_LENGHT);
	offset++;
	if (offset > 10000) {
		offset = 0;
	}
}

分享源码:点我下载

 

  • 7
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: MFCChartCtrl是一个用于显示图表信息的控件,可以用于Windows平台的图形用户界面应用程序。它可以显示多种类型的图表,包括点图,线图,柱状图,饼图等。用户可以使用该控件来展示数据信息或者进行数据分析。该控件支持多种颜色和样式的定制,可以让用户根据自己的需求来显示图表信息。此外,ChartCtrl还支持用户交互,可以使用鼠标来放大或缩小图表,或者选择其中的数据点来查看详细信息。ChartCtrl有着简单易用的接口和API,用户可以很方便地集成控件到自己的应用程序中。总之,MFCChartCtrl是一个强大且灵活的控件,可以帮助用户展示和分析数据信息,提升用户应用程序的交互和可视化效果。 ### 回答2: MFC ChartCtrl 是用于在 MFC 应用程序中创建和呈现图表的控件。它支持各种类型的图表,如线图、散点图和柱状图等,并且提供强大的自定义选项,例如调整图表轴的标签和颜色等。使用 MFC ChartCtrl 可以有效地显示大量的数据,通过交互式地浏览图表,用户可以更好地理解数据。另外, MFC ChartCtrl 还提供了鼠标缩放和移动功能,以帮助用户快速找到感兴趣的数据。此外, MFC ChartCtrl 还可以将图表导出为图像文件,方便用户将图表用于演示或其他用途。 MFC ChartCtrlMFC 应用程序中一个非常常用的控件,很多科研、数据分析和监控等领域的软件都采用 MFC ChartCtrl 来呈现数据。它是一个非常灵活和可定制的控件,可以根据用户需求来设置图表的样式和布局。同时, MFC ChartCtrl 还内置了丰富的图表模板和颜色主题,可以帮助用户快速创建高质量的图表。总之, MFC ChartCtrl 是一个非常实用的控件,它为 MFC 应用程序提供了便捷的数据可视化功能,让用户更方便地了解和分析数据。 ### 回答3: MFC ChartCtrl是一种基于MFC(Microsoft Foundation Classes)框架的图表控件,用于在Windows操作系统上开发图形化应用程序。ChartCtrl支持多种图表类型,如折线图、柱状图、饼图等,也可以自定义图表样式。 该控件是通过使用GDI+(Graphics Device Interface Plus)技术实现的,具有优异的渲染效果和性能。ChartCtrl还支持动态更新数据和自定义坐标轴标签、单位等功能,使用户能够更加灵活地使用该控件。 MFC ChartCtrl具有很高的可扩展性,可以通过继承和重载虚函数来实现自定义图表类型或特定需求。此外,ChartCtrl还提供了友好的支持文档和示例代码,帮助用户更好地使用和理解该控件。 总之,MFC ChartCtrl是一个十分实用的图表控件,可以为开发Windows图形化应用程序提供便利和灵活性,是值得推荐和使用的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值