灵活使用chart控件绘制动态图表

灵活使用chart控件绘制动态图表

ID:21131612

大小:44.50 KB

页数:5页

时间:2018-10-19

灵活使用chart控件绘制动态图表_第1页
灵活使用chart控件绘制动态图表_第2页
灵活使用chart控件绘制动态图表_第3页
灵活使用chart控件绘制动态图表_第4页
灵活使用chart控件绘制动态图表_第5页
资源描述:

《灵活使用chart控件绘制动态图表》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、灵活使用Chart控件绘制动态图表进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量。ActiveX控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用。本文仅以VC++为例说明Chart控件的使用。  Chart控件指Mschart.ocx(5.0版)或Mschrt20.ocx(6.0版),是VisualStudio自带的ActiveX控件之一,其属性、事件很多,功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等

2、。一安装和使用Chart控件  在用到Chart控件的项目中安装该控件:从Project->AddtoProject->ComponentsAndControls->RegisteredActiveXcontrols,选择Chart控件,则ClassWizard会生成相应的C++类,其中类CMSChart是由CWnd派生来的,它是Chart控件的主要类,其他的类全部是由COleDispatchDriver派生来,控制控件中的相应对象,完成各部分相关功能,如CvcAxis类是实现坐标轴相关功能的源代码。同时在项目的控件工具箱上会出现代表Chart控件的按钮,使用时把Chart控

3、件按钮从工具箱拖到对话框中,调整大小即可。  Chart控件至少有45个属性、9个方法、49个事件,在这里就不一一列举了。  在设计中,我们可以在主要属性页里修改各属性的属性值:右击对话框窗口中的Chart控件,选择“Properties”菜单项,就会弹出主要属性页对话框,对其中各属性值进行设置。有些属性在主要属性页里没有列出,只能编程修改。另外要动态绘制图表,必须掌握对控件的编程控制。  首先在对话框类中定义控件变量,以便编程时操纵控件。如对话框类定义如下:classCAbcDlg:publicCDialog{public:CAbcDlg(CWnd*pParent=NULL

4、);//{{AFX_DATA(CAbcDlg)enum{IDD=IDD_ABC_DIALOG};CMSChartm_Chart;//}}AFX_DATA......};  ActiveX控件的属性和方法在控件内部对应唯一一个整数索引值,编程时可以通过索引来设置或获取控件的属性值,也可以通过调用控件的C++类(在这里就是CMSChart)的成员函数设置或获取控件的属性值及调用控件的方法。例如:  在CMSChart类实现中有如下代码:CStringCMSChart::GetData(){CStringresult;InvokeHelper(0x9,DISPATCH_PROPER

5、TYGET,VT_BSTR,(void*)&result,NULL);returnresult;}voidCMSChart::SetData(LPCTSTRlpszNewValue){staticBYTEparms[]=VTS_BSTR;InvokeHelper(0x9,DISPATCH_PROPERTYPUT,VT_EMPTY,NULL,parms,lpszNewValue);}voidCMSChart::Refresh(){InvokeHelper(DISPID_REFRESH,DISPATCH_METHOD,VT_EMPTY,NULL,NULL);}  这段代码表明:属

6、性“Data”索引值为0x9,我们可以调用函数SetData对图表中某点的值进行设置。索引值为DISPID_REFRESH的方法“Refresh”,调用它进行刷新。如:CStringstr=“34.5";m_Chart.SetData(str);m_Chart.Refresh();......  阅读CMSChart类的实现会发现,有些属性的值不是普通的BOOL、CString等数据类型,而是另一个控件驱动类的类变量,如:CVcPlotCMSChart::GetPlot(){LPDISPATCHpDispatch;InvokeHelper(0x28,DISPATCH_PROP

7、ERTYGET,VT_DISPATCH,(void*)&pDispatch,NULL);returnCVcPlot(pDispatch);}  在CVcPlot类的实现中有如下代码:CVcAxisCVcPlot::GetAxis(longaxisID,constVARIANT&Index){LPDISPATCHpDispatch;staticBYTEparms[]=VTS_I4VTS_VARIANT;InvokeHelper(0x1f,DISPATCH_PROPERTYGET,VT_DISPATCH,(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。