mschart安装使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

mschart安装使用

最近需要为程序显示一些柱状图、线图之类的,查了一下微软的mschart不错,功能强大。可是自vc6.0之后mschart控件就从ms的IDE里去掉了,如果用只能自己下载安装。安装mschart需要

1 .net framewrok 3.5 sp1(注意是sp1),没有安装的话就去下载吧,完整包大概200多M

2 安装MSChart.exe MSChart_VisualStudioAddOn.exe 下载mschrt20.ocx 到C:\WINDOWS\system32目录下。命令行运行regsvr32 mschrt20.ocx注册控件

3 在vs2005之后的平台上,你要么在class view下add class->MFC Class f rom ActiveX Control然后有两个,你可以选择registy然后选择ms mschart 6.0(o led),这样只能出现一个类CMSCHART,或者选择File然后浏览mschrt20.ocx,这里面生成了很多类,你全部添加进去,最后就可以用了。

第二、你可以在一个MFC dialog上insert axtivex control或者toolbox选择choose item->com选择组件让它出现在工具箱中,这样也可以有控件。

我们自己选择生成的很多类,跟网上有示例的类函数名称上有所不同,可能会给使用带来麻烦。其实最简单的就是找到一个Demo把里面相关的CMSCHART和其它相关的十几个类都拷贝到我的工程文件夹里,再添加进来,就ok了。

网上很多例子可供参考,比如:/document/viewdoc/?id=9 59

关于遇到的一些问题。在设置图形类型的时候,m_chart.SetChartType(1|2);显示出2D曲线图,而我们用m_chart.SetChartType(16);的时候如果你只设置了m_chart. SetColumnCount(1); 就不会显示,因为16的散列图需要的是一对坐标点,你至少需要设置m_chart.SetColumnCount(2);为2。

MsChart实现无闪烁动态曲线(MFC)

最近需要用MFC做一个界面动态显示曲线,自己画坐标轴画曲线太费时间,网上也有很多已实现的动态曲线接口,但是也不太灵活。正好微软有个现成的MS Chart,功能比较全面,查了一些资料,总算实现了无闪烁的动态曲线。关于MSCh art的安装可以参考上篇文章/wy-wangyan/archive/2011/0 5/06/2038981.html

实现的效果截图:

实现的原理:MSChart如果要实现动态的曲线就只能在设置的定时器中根据R owCount,到一定的列数后在最后一列插入新一列(m_Chart.GetDataGrid().InsertR ows),将最早出现的那一列删除(m_Chart.GetDataGrid().DeleteRows)。对于无闪烁刷新的实现类似于一般MFC画图中创建双缓冲画图避免屏幕闪烁的方法,这里是用CStatic动态创建一个Picture Control图像控件,将它设定和要画的MSChart 一样大,然后把mschart的内容利用m_Chart.EditCopy()复制到剪贴板,然后再在picture control中显示出来。

下面是全部的实现的代码:

MSChart需要在view的oncreate中创建出mschart:

1int CRTDBView::OnCreate(LPCREATESTRUCT lpCreateStruct)

2{

3if(CView::OnCreate(lpCreateStruct) == -1)

4return-1;

5

6// TODO: Add your specialized creation code here

7CRect rc;

8GetClientRect(&rc);

9VERIFY(m_Picture.Create(_T(""),SS_BITMAP|WS_CHILD|WS_EX_TRANSPARE NT| WS_VISIBLE,CRect(0,0,1200,600),this,IDC_PICTURE));

10if(!m_Chart.Create(_T("RTDB"),WS_CHILD| WS_VISIBLE, CRect(0,0,1200,600), this, 10))

11return-1;

12

13

14return0;

15}

在ONSIZE中设置mschart的位置:

1void CRTDBView::OnSize(UINT nType, int cx, int cy)

2{

3CView::OnSize(nType, cx, cy);

4

5// TODO: Add your message handler code here

6if( m_Chart.GetSafeHwnd())

7m_Chart.MoveWindow( 0, 0, cx, cy );

8}

下面是主要实现部分的代码了,InitChart函数实现了mschart的背景、标题、XY 坐标刻度以及颜色字体大小、曲线设定颜色以及数据点的显示等。主要是chart的初始化。

1void CRTDBView::InitChart(void)

2{

3// 设置标题

4m_Chart.SetTitleText(_T("RTDB"));

5

6// 设置标题颜色

7m_Chart.GetTitle().GetVtFont().GetVtColor().Set(0,255,0);

8

9// 改变字体大小

10m_Chart.GetTitle().GetVtFont().SetSize(14);

11

12// 改变背景色

13m_Chart.GetBackdrop().GetFill().SetStyle(1);

14m_Chart.GetBackdrop().GetFill().GetBrush().GetFillColor().Set(0,0,0);

相关文档
最新文档