怎样在vs2013没有mfc/MFC中使用TeeChart绘图控件

10704人阅读
vs2010的用法和vc6有很大的不同,特别是在一些函数调用那里,当然。控件导入也是很不一样的
安装好控件后就可以在工程里加入teechart控件了
加入方法有如下几种:
1.添加Teechart控件
1.1 插入Teechart控件
1.1.1 插入控件
新建一个对话框工程,在对话框上点击鼠标右键,弹出的菜单里选择“插入ActiveX控件”
然后弹出的对话框里选择TeeChart控件
这时对话框就有TeeChart控件了
1.1.2 vs2010另外一种插入控件的方法
vs2010对话框设置的工具栏上就有许多控件了,若想把我们常用的控件也加到工具栏上以后使用就很方便了,下面说的这种方法就是把控件加入工具栏里。方便以后的调用
在工具栏的空白处点击右键,选择添加选项卡
这时vs就会新建一个选项卡,自己可以定义一个名称,这里命名为绘图控件
为选项卡添加项:在新建的选项卡的空白处点击右键,选择“选择项”
由于控件比较多,会耗费一定的时间打开这个选择项,别以为死机了,耐心等个几十秒吧
在打开的对话框中选择选择com标签,选择teechart控件
这样teechart控件就会在你的工具栏新加的选项里了,以后都会存在(我添加TeeChat的同时还把其他的一些控件添加进去了)
1.1.3 控件属性设置
双击控件进行相关设置
这里添加一个快速线图-Fast Line
若数据量特别大,可以在Series标签里的Format的Draw all选项去掉
在Chart标签里还可以设置坐标轴的名称属性等,这里先不详细讲述属性的设置
2.为控件添加类
vs2010与vc6不一样,vs2010的控件对应的类添加相对比vc6麻烦
这里就对刚刚加入的TeeChart控件加入相关的类
2.1 添加TypeLib的mfc类
(1)选择vs菜单“项目”-“添加类”(注意这时类视图树形控件选中最顶端的父节点)
(2)添加TypeLib的mfc类
(3)在可用的类型库里选择teechart5
(4)在接口里就有TeeChart对应的所有类了,这里TChart是必须的接口,其他的可以根据需要添加
(5)点击完成就把CTChart这个类添加进工程里了
其实第(2)步可以选择ActiveX控件的Mfc类,操作方法雷同,不过这时是只列出对应的接口
3.把TeeChart控件和对象关联
3.1 为控件关联对象
在控件上点击右键,选择添加变量,即可为控件关联对象
3.2 去掉vs默认的初始化
不知为何vs会默认给添加的变量初始化0,这个初始化一定要去掉否则无法使用
public:&&&&&CTchart1 m_C
CTeeChartDlg::CTeeChartDlg(CWnd*&pParent/*=NULL*/)&
&&&&:&CDialogEx(CTeeChartDlg::IDD, pParent)
&&&&m_hIcon&=&AfxGetApp()-&LoadIcon(IDR_MAINFRAME);
void&CTeeChartDlg::DoDataExchange(CDataExchange*&pDX)&
&&&&CDialogEx::DoDataExchange(pDX);
&&&&DDX_Control(pDX, IDC_TCHART1, m_Chart);
这时TeeChart就可正常使用了
TeeChart5破解版下载地址:
vc6,vs2010皆可用
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:446701次
积分:4998
积分:4998
排名:第2146名
原创:72篇
转载:192篇
评论:46条
(3)(1)(3)(1)(7)(14)(1)(4)(1)(1)(4)(3)(1)(33)(8)(58)(26)(3)(1)(24)(28)(18)(3)(3)(6)(10)(1)17900人阅读
1.前期准备
1. 1 添加TeeChart控件,给控件添加变量m_TeeChart
添加TeeChart控件,右击控件,选择添加变量,vs会自动给我们引入CTchart1这个类,但是只有这个类,我们是远远不够的,需要添加teechart其他相关的类,添加方法在之前已经讲过,不再重复。
1.2. 引入必要的头文件
其实之前的方法比较麻烦,更简单就是通过类向导,导入类型库的类
如图进入类向导,选择添加类按钮的下拉菜单,选择类型库中的MFC类
选择teechart5即可
#include &CSeries.h&&
#include &CAxis.h&
#include &CAxes.h&
#include &CLegend.h&
需要还可以继续在之后引入
--------------------------------------------------------------------------------------------------------------------------------
2. teechart 画图 - 折线图
TeeChart 画图步骤一般是先获得图线序列CSeries,再给Series添加点;添加点可以用函数AddXY,或者AddArray。AddArray要比AddXY的效率高出很多,其比较可见 TeeChart绘图控件 - 之三 - 提高绘图的效率
2.1 清除图形
在画线之前把图形清除一下,否则会覆盖,清除可用CSeries的函数Clear();
但是当添加多个Series后要对所有Series都clear,这是很蛋疼的,因为你有时都不知道有多少个Series,这样可以先获得Series的总数在clear
& &&for(long&i&=&0;i&m_TeeChart.get_SeriesCount();i++)&
&&&&&&&&((CSeries)m_TeeChart.Series(i)).Clear();
通过CTchart 的get_SeriesCount函数获得所有图像序列,再全部清除,这个函数经常用到,可用定义为类成员函数,这里是个对话框CTChartDlg
void&CTChartDlg::ClearAllSeries(void)&
&&&&for(long&i&=&0;i&m_TeeChart.get_SeriesCount();i++)
&&&&&&&&((CSeries)m_TeeChart.Series(i)).Clear();
好了现在开始说说怎么画折线图
2.2 普通连线图
一般我们画的图都属于这种,就是把点连接起来,选择fast line 的 Normal,就是普通连线图
在需要画图的地方先要获得曲线序列Series,然后通过画图函数AddXY,或者AddArray作图。
2.2.1 普通线图 - AddXY
下面演示AddXY的方法
AddXY就是一个一个加入点,在点数不多,且需要动态显示的时候是不错的选择。点数多的情况下嘛,那就还是用AddArray了
先看看AddXY
& &&const&UINT&nDATALENGTH=&100;&
&&&&double&dData[nDATALENGTH];
&&&&for&(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&dData[i]&=&100 * sin((float)i)*cos((float)4*i);
&&&&//ClearAllSeries();
&&&&CSeries lineSeries&=&(CSeries)m_TeeChart.Series(0);
&&&&lineSeries.Clear();//在最前面加上ClearAllSeries(ClearAllSeries是自己写的函数)就不用了
&&&&for(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&lineSeries.AddXY((double)i,dData[i],NULL,0);
由于在TeeChart里,只加了一个FastLine,所以Series(0)就算Fast Line,代码首先获得图像序列m_TeeChart.Series(0);
然后再调用这个序列来作图,作图前先清空图像,用ClearAllSeries()也可以
然后就是一个点一个点的往里加了
做出来的效果:
AddXY的第一个参数是x点坐标,第二个是y点坐标,第三个参数是为了使x坐标特殊显示,这是会替换掉x坐标的显示内容,如我想显示“点xx“可以这样
&&&&CString&&
&&&&for(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&str.Format(_T(&点%d&),i);
&&&&&&&&lineSeries.AddXY((double)i,dData[i],str,0);
第四个参数在线图里不起作用,在柱状图里可以设置颜色
2.2.2 普通线图 - AddArray
在数据量特别大时,强烈建议使用AddArray函数
AddArray的函数声明如下
void AddArray(long ArraySize, VARIANT& YArray, VARIANT& XArray);
x,y是两个VARIANT的数据类型,VARIANT有个类型是VT_ARRAY
可以给VARIANT赋一个数组进去
具体操作如下:
const&UINT&nDATALENGTH&=&100;&
double&dData[nDATALENGTH];
for&(int&i=0;i&nDATALENGTH;i++)
&&&&&dData[i]&=&100*sin((float)i)*cos((float)4*i);
//声明如下数据:
VARIANT vAX,vAY;
SAFEARRAY*&
SAFEARRAY*&
SAFEARRAYBOUND
rgsabound.cElements=nDATALENGTH;&
rgsabound.lLbound=0;
psax=SafeArrayCreate(VT_R8,1,&rgsabound);//分配空间
psay=SafeArrayCreate(VT_R8,1,&rgsabound);
vAX.vt=VT_ARRAY|VT_R8;//设置为double型数组,VT_R8就是指double
vAX.parray=//把内容加入VARIANT中
vAY.vt=VT_ARRAY|VT_R8;
vAY.parray=
//这时VARIANT 就可以加入数据了
double&//用来临时存放x坐标&
for(long&i=0;i&nDATALENGTH;i++)
&&&&dtemp&=&i;
&&&&SafeArrayPutElement(psax,&i,&dtemp);
&&&&dtemp&=&dData[i];
&&&&SafeArrayPutElement(psay,&i,&dtemp);
&&&&//更简单写法
&&&&//SafeArrayPutElement(psay,&i,dData+i);
//开始画图
CSeries lineSeries&=&(CSeries)m_TeeChart.Series(0);&
lineSeries.Clear();
lineSeries.AddArray(nDATALENGTH,vAY,vAX);
这时我看TeeChart官方实例找到的方法,相对简单点
&&&&COleSafeArray XV&&&&
&&&&COleSafeArray YV&&&&
&&&&DWORD&numElements[]&=&{nDATALENGTH};&&&&
&&&&// 创建安全数组&&&
&&&&XValues.Create(VT_R8,&1, numElements);&&&&
&&&&YValues.Create(VT_R8,&1, numElements);&&&&
&&&&// 初始化&
&&&&long&i;&&&&
&&&&double&
&&&&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_TeeChart.Series(0);
&&&&lineSeries.Clear();
&&&&lineSeries.AddArray(nDATALENGTH,YValues,XValues);
2.3 去除/显示legend
如果不想要右边那一栏数据显示,可以通过代码去除
CLegend是用来控制这个显示的
CLegend legend&=&(CLegend)m_TeeChart.get_Legend();&&&&&
legend.put_Visible(FALSE);
可以用一个check控件控制器显示状态
添加单选控件&& ,id为IDC_CHECK_ShowLegend,
void&CTChartDlg::OnBnClickedCheck_ShowLegend()&
&&&&CLegend legend&=&(CLegend)m_TeeChart.get_Legend();
&&&&if(BST_CHECKED&==&((CButton*)GetDlgItem(IDC_CHECK_ShowLegend))-&GetCheck())
&&&&&&&&legend.put_Visible(TRUE);
&&&&&&&&legend.put_Visible(FALSE);
不用代码的话可以通过设置控件属性
明显,这没有代码灵活
2.4 改变线图颜色
默认设置是红,我要设置成其他颜色可以用put_Colour
如上代码的lineSeries最后加一个,就会变成RGB(255,0,255)的颜色了
lineSeries.put_Color(RGB(255,0,255));
3. teechart 画图 - &柱状图
3.1 &添加柱状图
这时会多一个图形
注意这里默认是绿色的,等下会发现画出来的不一样
方法和线图没什么区别,直接上码:
&&&&const&UINT&nDATALENGTH&=&20;&
&&&&double&dData[nDATALENGTH];
&&&&for&(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&dData[i]&=&abs(100*sin((float)i));
&&&&ClearAllSeries();
&&&&CSeries barSeries&=&(CSeries)m_TeeChart.Series(1);
&&&&for(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&&&&&&barSeries.AddXY((double)i,dData[i],NULL,0);
注意不是Series(0)了
我擦~那效果
加个abs,好看很多~~
3.3 改变柱状图的颜色
为啥是黑色的?设置了绿色的,我一开始也以为坑爹的设置没有用,后来研究了一下发现时AddXY的第四个参数起作用的
上面的图我们是这样加的
barSeries.AddXY((double)i,dData[i],NULL,0);
第四个参数0就相当于RGB(0,0,0),这第四个参数就是设置颜色的了
把程序稍作修改
&&&&for(int&i=0;i&nDATALENGTH;i++)&
&&&&&&&&i%2==&0
&&&&&&&&&&&&?&barSeries.AddXY((double)i,dData[i],NULL,RGB(255,255,0))
&&&&&&&&&&&&:&barSeries.AddXY((double)i,dData[i],NULL,RGB(0,255,255));
3.4 去除/显示 数据标示
好吧又遇到问题了,去掉上面的标示
ok,那个标示是用CMarks管理的,加入这个类就行了,用类向导,加入CMarks
#include &CMarks.h&
添加单选控件&&IDC_CHECK_Marks
void&CTChartDlg::OnBnClickedCheckMarks()&
&&&&CSeries barSeries&=&(CSeries)m_TeeChart.Series(1);
&&&&CMarks SeriesMarks&=&(CMarks)barSeries.get_Marks();
&&&&if(BST_CHECKED&==&((CButton*)GetDlgItem(IDC_CHECK_Marks))-&GetCheck())
&&&&&&&&SeriesMarks.put_Visible(TRUE);
&&&&&&&&SeriesMarks.put_Visible(FALSE);
3.5 AddArray 给柱状图添加数据
和line一样
&&&&const&UINT&nDATALENGTH&=&20;&
&&&&double&dData[nDATALENGTH];
&&&&for&(int&i=0;i&nDATALENGTH;i++)
&&&&&&&&dData[i]&=&abs(100*sin((float)i));
&&&&COleSafeArray XV&&&&
&&&&COleSafeArray YV&&&&
&&&&DWORD&numElements[]&=&{nDATALENGTH};&&&&
&&&&// 创建安全数组&&&
&&&&XValues.Create(VT_R8,&1, numElements);&&&&
&&&&YValues.Create(VT_R8,&1, numElements);&&&&
&&&&// 初始化&
&&&&long&i;&&&&
&&&&double&
&&&&for(i=0; i&nDATALENGTH; i++)&
&&&&{&&&&&&&
&&&&&&&&dval&=&i;
&&&&&&&&XValues.PutElement(&i,&&dval);
&&&&&&&&dval&=&dData[i];
&&&&&&&&YValues.PutElement(&i,&&dval);
&&&&&&&&//YValues.PutElement(&i, dData+i);
&&&&ClearAllSeries();
&&&&CSeries lineSeries&=&(CSeries)m_TeeChart.Series(1);
&&&&lineSeries.AddArray(nDATALENGTH,YValues,XValues);
这时出现的图像就是默认的颜色了
想改颜色!没问题,还是用put_Color
barSeries.put_Color(RGB(255,0,0));
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:446702次
积分:4998
积分:4998
排名:第2146名
原创:72篇
转载:192篇
评论:46条
(3)(1)(3)(1)(7)(14)(1)(4)(1)(1)(4)(3)(1)(33)(8)(58)(26)(3)(1)(24)(28)(18)(3)(3)(6)(10)(1)VS2010环境下,MFC中teechart控件使用方法 - 下载频道
- CSDN.NET
&&&&VS2010环境下,MFC中teechart控件使用方法
VS2010环境下,MFC中teechart控件使用方法
VC6.0和vs2010环境之前的区别还是蛮多的,之前在6.0下用mschart控件,后面在2010中发现mschart控件不好看,改用teechart控件,界面美观。
若举报审核通过,可奖励20下载分
被举报人:
jiafeimaogf
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
您可能还需要
开发技术下载排行怎样在VS2013/MFC中使用TeeChart绘图控件_百度知道
怎样在VS2013/MFC中使用TeeChart绘图控件
提问者采纳
m_chart&quot,打开cmd,许多功能可以双击后进行设置:,其他类包括CSeries,修改属性“Caption”和“ID”双击按钮自动生成按钮点击事件处理函数,Teechart控件包含很多类,CTChart是必须的,但是CTestDlg.AddXY((double)i,然后弹出对话框提示注册成功注册完毕,只要输入&quot,在弹出的对话框中可以看到很多图表类型,防止编译失败注意添加头文件,适当调整控件大小控件已经导入了; 100.h头文件;接着输入;COM组件"然后选择“MFC”项中的“TypeLib中的MFC类”,编辑函数,第一个参数表示横坐标:
在此添加控件通知处理程序代码CSeries lineSeries = (CSeries)m_chart,点“添加”,NULL。END注意事项添加完变量后别忘了把构造函数里的初始化赋值语句去掉.ocx,选择好项目存放的目录并填写项目名称接着是创建向导,用AddXY函数进行绘图,弹出对话框.Clear():regsvr32 TeeChart5,在对话框类的头文件CTestDTeeChart Pro Active control v5&lt,属于类“CTchart1”;就可以直接选中在“接口”中选择所需的类;1;lineSeries,首先添加类,这样类和变量就关联好了;并选中它;;
}}4这样。Teechart功能很是强大,其它选项暂不多说;&#47,选择“Add”添加图表,打开VS2013,安装完后找到安装路径(带有TeeChart5;”的变量定义。工具&#47:OnBnClickedDraw(){&#47.h中会有“CTchart1 m_chart,选择“ISeries”,对变量进行命名,找到&quot。在注册表的可用类型库中找到&quot, rand().pro.cpp文件,这里命名为&quot,点击&quot, m_chart(0)”,和面两个默认NULL就行;&quot,第二个表示纵坐标。确定以后可以在类视图中看到新添加的两个类;原料Visual studio 2013TeeChart,只需修改选择“基于对话框”模式,选择默认的控件类型;tee&quot,一个简单的Teechart应用程序就完成了,点击“完成”会生成series0添加一个按钮; i &lt,希望对大家有所帮助,这里选择最简单的“Fast line”,选择“工具&quot,需要把它删除、CAxis。这样前期准备工作就完成了END控件绘图示例-绘制随机曲线双击对话框中添加的Teechart控件,也很方便;TeeChart Pro Active control v5&在工具箱中找到“TeeChart Pro Active control v5”控件并拖放到对话框上;-》&quot,选择“Fast line”下选的“normal”系列,NULL)。项目中会多出一个tchart1.ocx文件); TODO.Series(0)。接下来需要对控件关联变量;-》&quot,至于“最小化框”和“最大化框”随各自情况选择、“ITChart”,这里主要讲述如何在VS2013&#47,这里仅以“CTChart”和“CSeries”为例,并取消“3D”,新建一个MFC项目;,对应的接口是“ITChart”,这里不需要一直下拉慢慢找.ActiveX方法&#47,安装自然不用多说。void CTestDlg.cpp文件中对话框类的构造函数会多出一句“。在“类视图”中右键项目名称;,接下来需要添加相关的“类”和“变量”;
for (int i = 0,对控件右键选择“添加变量”; i++)
lineSeries,在VC++栏中找到MFC项目.h文件和tchart1,注意添加CSeries,复制当前路径2安装完后需要对控件进行简单的注册;步骤1在网上下载TeeChart控件并安装.0&gt,顺便说一下在VS2013中如何创建MFC项目,转到软件安装好的目录、CAxes,还有3D的,包括2D的;选择工具箱项&quotTeeChart作为一款强大好用的绘图控件,否则会编译出错;确定&quot,选择“添加”-》“类”、CTitles等等,绘制的图表美观实用,通过它可以绘制出各式各样的图表,因为除CTchart类以外.v5;MFC中使用TeeChart控件,通过cd指令并粘贴原来复制好的路径,其余的默认点“下一步”即可将默认生成的三个控件按delete键删除接下来导入TeeChart控件
其他类似问题
teechart的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 vs2013 mfc控件 的文章

 

随机推荐