VC环境中调用TeeChart控件实现数据曲线分析
【IT168技术文档】
介绍
TeeChart Pro是一款提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供您选择。提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择,TeeChart还包括一个强大的、完整的编辑对话框,几乎可用于每个组件和子组件,允许你快速的设计复杂图表应用程序。图表编辑器通过 TeeCommander组件进一步得到增强,它提供一次点击访问图表编辑器和共同特征。
正文
由于前段时间在实现一个项目中需要进行很多的历史信息的统计,尤其在曲线分析的功能设计的时候,客户对这块的功能要求多,需要能够对历史记录的点的信息进行多时段的查询.(历史记录信息采取1分钟保存一个点的方法),且需要对局部进行分析,在综合了很多曲线控件和一些别的实现方法后,决定采用TeeChart控件实现.在搜索了网络上面关于这个控件VC环境使用的方法后没有发现一个完整的控件使用工程,于是在配合帮助文档和网络信息后完成了曲线分析的开发,现将开发经验分享如下:希望对那些寻求相关信息的人有帮助
首先启动VC建立一个基于对话框程序的工程(如果建立SDI工程也可以,不过要对控件进行动态创建等工作实在太麻烦了),然后Insert ActiveX Controls->选择TeeChart控件加入到工程中间.然后通过classWizard定义控件变量.这时编译器会自动加载一系列的控件相关的类到程序中间来.
然后打开曲线配置属性,在Series属性页加入两条fastline曲线(见下图)
定位到Tools属性页,加入一些相关的Tools(见下图)
准备工作完成了,我们现在开始编写加入程序数据方法编程了,这里采用加入随机数的方法(0-300的随机数)
#define GetRandom( min, max ) ((rand() % (int)(((max)+1) - (min))) + (min))
这里在初始化曲线的时候就采用控件的AddXY接口加入了1440个点的随机数,这里采用的条件为历史为一天,且当天一分钟保存一个历史点信息,全天的历史点为(60*24 = 1440),我们可以在调用的时候根据调用的时间间隔长短进行动态的修改
void CTestTeeChartDlg::InitChart() { m_ctrlChart.Series(0).Clear(); m_ctrlChart.Series(1).Clear(); m_ctrlChart.GetPage().SetMaxPointsPerPage(1440); COleDateTime CurTime = COleDateTime::GetCurrentTime(); COleDateTime tempTime ; tempTime = CurTime; CurTime.SetTime(0,0,0); CurTime.SetDate(tempTime.GetYear(),tempTime.GetMonth(),tempTime.GetDay()); COleDateTimeSpan tmSpan = COleDateTimeSpan(0,0,1,0); CString csTime ; for(int i=0; i<1440; i++) { csTime = CurTime.Format("%H:%M"); float fzVal = float(GetRandom(12000,28000)/100); m_ctrlChart.Series(0).AddXY(i,fzVal,csTime,i); fzVal = float(GetRandom(15000,25000)/100); m_ctrlChart.Series(1).AddXY(i,fzVal,csTime,i); CurTime += tmSpan; } m_ctrlChart.GetAxis().GetLeft().SetMinMax(100, 300); }
0
相关文章