您的位置:首页 > 其它

VS2010MFC - TeeChart经验总结(零基础入门到动态创建)

2018-01-18 11:33 701 查看
因为工作上使用到mfc中的teechart控件,在经过很多摸索和学习后基本能够使用teechart控件。但在这个过程中走过很多弯路浪费了很多时间,在这里对teechart控件的使用经验进行总结,希望能够方便后来的学习者。
  (我主要想说明的是TeeChart控件的动态创建过程,纯用代码进行控制,包括对样式的修改,数据的添加等等。当然这也是一份详细的零基础入门教程,先从安装teechart控件、拖拽控件进行创建、利用编辑框修改属性等让大家对teechart控件能够快速入门。在简单的部分我会引用一些别人写的非常好的教程,也免得大家再次查找。)

  1,TeeChart控件的安装和简单使用

  1.1安装

  安装较为简单,百度经验的教程非常详尽,在csdn下载专区可以下载到teechart5或teechart8的破解版,然后安装教程一步一步安装就可以了。(这次教程都是在基于对话框中实现的)

  怎样在VS2013/MFC中使用TeeChart绘图控件 -(http://jingyan.baidu.com/article/c33e3f48ac6c5aea15cbb51f.html)

  


  成功安装。

 1.2简单使用(拖拽创建和利用编辑框绘制折线图等基本图形)

  通过编辑框绘制图形较为简单,但也很多需要注意的地方包括对控件类的引用,通过代码控制数据的添加。下面给大家一份非常详细的折线图柱状图的创建教程,其中也包含一些对样式的修改,跟着这份教程完成基本图形的绘制会增强对teechart控件的使用。

  VS2010
使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)-http://blog.csdn.net/wangshouchao/article/details/8837080


 
在这里有一点很重要就是引入必要的头文件,因为如果想通过代码来创建和控制样式的修改就一定要用到必要的头文件,所以这里要掌握头文件的引入。

 
这个链接的教程写的非常好,可惜没有后续的更新,网上的teechart教程资料有些非常不错只是查找起来非常费劲,而且有的教程是在VC6.0下使用teechart控件,参照那些教程会让人产生困扰,所以希望能够帮助大家少走一些弯路。

  2,通过编辑框修改TeeChart控件属性

双击teechart控件即可打开编辑框,在编辑框中可点击add来添加各种图,并且在其中可以较为方便的修改teechart图的样式属性,如标题、是否3D显示、背景色、x y轴范围大小等等。这些操作在1.2的链接教程中有些涉及到。如图:



通过编辑框加入一些随机数据。





是否显示Legend。



修改标题。



修改左轴标题。

  可以看到通过编辑框我们可以非常方便的修改teechart图的样式,而且不需要添加各种类。但是,如果想用代码动态创建teechart图并且用代码实现修改样式和这个过程则完全不同。大家可以记住一点,只要是在编辑框内能够实现的样式的修改,用代码则一定也可以实现,并且代码可以实现更多方面的样式的修改,下面我们就开始进入关键,如何利用代码动态创建teechart图并且修改样式。

3,动态创建Teechart控件并且修改样式

首先我们要添加CTChart类,然后在对话框的.h头文件中加入一个CTChart的成员变量m_chart,最后我们就可以在对话框的.cpp文件中的OnInitDialog()(初始化函数,在其中可以添加额外的初始化)函数中调用m_chart.Create(NULL,WS_CHILD|WS_VISIBLE,rc,this,1000);就可以实现动态创建teechart控件了。

如图,我们按步骤一步一步来。

3.1引入CTChart类

这一步需要注意我们选择的是Active中的MFC类里的CTChart,这很关键大家注意。如果对引入类的操作不熟悉请回到第一个链接的教程。

  




引入CTChart类。

3.2添加成员变量m_chart

我创建的工程名为test2,大家可以找到自己工程目录下对应的{工程名Dlg.h}文件来添加成员变量。



然后在对应的Dlg.cpp文件中的OnInitDialog()添加创建代码如下:

[cpp]
view plain
copy

print?

BOOL Ctest3Dlg::OnInitDialog()  
{  
  //...省略...  
  // TODO: 在此添加额外的初始化代码  

BOOL Ctest3Dlg::OnInitDialog()
{
//...省略...
// TODO: 在此添加额外的初始化代码


[cpp]
view plain
copy

print?

  //创建表  
   CRect rc;  
  GetClientRect(rc);  
  m_chart.Create(NULL,WS_CHILD|WS_VISIBLE,rc,this,1000);//创建teechart图  
   m_chart.AddSeries(1);//1默认为柱状图  
   CSeries mySeries=(CSeries)m_chart.Series(0);//必须要引入CSeries类  
   mySeries.AddXY(10,20,NULL,RGB(255,255,255));//添加一些数据  
   mySeries.AddXY(11,15,NULL,RGB(255,255,255));  
   mySeries.AddXY(12,22,NULL,RGB(255,255,255));  
   mySeries.AddXY(13,10,NULL,RGB(255,255,255));  
}  

//创建表
CRect rc;
  GetClientRect(rc);
  m_chart.Create(NULL,WS_CHILD|WS_VISIBLE,rc,this,1000);//创建teechart图
m_chart.AddSeries(1);//1默认为柱状图
CSeries mySeries=(CSeries)m_chart.Series(0);//必须要引入CSeries类
mySeries.AddXY(10,20,NULL,RGB(255,255,255));//添加一些数据
mySeries.AddXY(11,15,NULL,RGB(255,255,255));
mySeries.AddXY(12,22,NULL,RGB(255,255,255));
mySeries.AddXY(13,10,NULL,RGB(255,255,255));
}
这样我们就实现了teechart图的动态创建,注意用到哪些类一定要进行引用。
3.3通过代码修改样式

  通过代码修改各种不同的样式需要引入不同的类。例如,想要修改x轴区间最大最小值就用到了CAxes,CAxis。具体写法

[cpp]
view plain
copy

print?

</pre><pre name="code" class="cpp"><span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;">//底轴区间  
  CAxes axes = (CAxes)m_chart.get_Axis();  
  </span><span style="font-family: "Microsoft Yahei", 微软雅黑, arial, 宋体, sans-serif; color: rgb(51, 51, 51);font-size:14px;">CAxis</span><span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;"> axisBottom = axes.get_Bottom();  
  axisBottom.SetMinMax(6,26);</span>  

</pre><pre name="code" class="cpp"><span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;">//底轴区间
CAxes axes = (CAxes)m_chart.get_Axis();
</span><span style="font-family: "Microsoft Yahei", 微软雅黑, arial, 宋体, sans-serif; color: rgb(51, 51, 51);font-size:14px;">CAxis</span><span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;"> axisBottom = axes.get_Bottom();
axisBottom.SetMinMax(6,26);</span>


[cpp]
view plain
copy

print?

<span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;">//修改背景色  
  CPanel panel= m_chart.get_Panel();//引入CPanel  
  panel.put_Color(RGB(255,255,255));  
</span>  

<span style="font-family:Microsoft Yahei, 微软雅黑, arial, 宋体, sans-serif;">//修改背景色
CPanel panel= m_chart.get_Panel();//引入CPanel
panel.put_Color(RGB(255,255,255));
</span>
那这里就有一个问题了,到底哪些类是控制相应的样式的呢?这就需要我们通过官方文档去查询了,还有一个方法就是在编辑框中找到更改的样式,然后参照编辑框里类的递进关系,再从官方在线文档中就可以比较容易的找到相应的类了。
http://www.teechart.net/docs/  官方在线文档(点击Teechart
ActiveX下的TeeChart Pro ActiveX Library Reference)

大家一定要学会怎么使用这种方法,在实际查找过程中一定会有问题,耐心下来慢慢查找,并且我们可以参照vc6.0教程里的代码通过转换为我们可以用的代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐