欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    VS使用TeeChart绘图控件.docx

    • 资源ID:3499465       资源大小:1.57MB        全文页数:32页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    VS使用TeeChart绘图控件.docx

    1、VS使用TeeChart绘图控件VS2010 使用TeeChart绘图控件 - 之一 - 控件和类的导入vs2010的用法和vc6有很大的不同,特别是在一些函数调用那里,当然。控件导入也是很不一样的安装好控件后就可以在工程里加入teechart控件了加入方法有如下几种:1.添加Teechart控件1.1 插入Teechart控件1.1.1 插入控件新建一个对话框工程,在对话框上点击鼠标右键,弹出的菜单里选择“插入ActiveX控件”然后弹出的对话框里选择TeeChart控件这时对话框就有TeeChart控件了1.1.2 vs2010另外一种插入控件的方法vs2010对话框设置的工具栏上就有许多

    2、控件了,若想把我们常用的控件也加到工具栏上以后使用就很方便了,下面说的这种方法就是把控件加入工具栏里。方便以后的调用在工具栏的空白处点击右键,选择添加选项卡这时vs就会新建一个选项卡,自己可以定义一个名称,这里命名为绘图控件为选项卡添加项:在新建的选项卡的空白处点击右键,选择“选择项”由于控件比较多,会耗费一定的时间打开这个选择项,别以为死机了,耐心等个几十秒吧在打开的对话框中选择选择com标签,选择teechart控件这样teechart控件就会在你的工具栏新加的选项里了,以后都会存在(我添加TeeChat的同时还把其他的一些控件添加进去了)1.1.3 控件属性设置双击控件进行相关设置这里添

    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是必须的接

    4、口,其他的可以根据需要添加(5)点击完成就把CTChart这个类添加进工程里了其实第(2)步可以选择ActiveX控件的Mfc类,操作方法雷同,不过这时是只列出对应的接口3.把TeeChart控件和对象关联3.1 为控件关联对象在控件上点击右键,选择添加变量,即可为控件关联对象3.2 去掉vs默认的初始化不知为何vs会默认给添加的变量初始化0,这个初始化一定要去掉否则无法使用public:CTchart1 m_Chart;CTeeChartDlg:CTeeChartDlg(CWnd*pParent/*=NULL*/):CDialogEx(CTeeChartDlg:IDD, pParent)m_

    5、hIcon=AfxGetApp()-LoadIcon(IDR_MAINFRAME);voidCTeeChartDlg:DoDataExchange(CDataExchange*pDX)CDialogEx:DoDataExchange(pDX);DDX_Control(pDX, IDC_TCHART1, m_Chart);这时TeeChart就可正常使用了VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)1.前期准备具体可见VS2010 使用TeeChart绘图控件 - 之一控件和类的导入1. 1 添加TeeChart控件,给控件添加变量m_TeeChart添加

    6、TeeChart控件,右击控件,选择添加变量,vs会自动给我们引入CTchart1这个类,但是只有这个类,我们是远远不够的,需要添加teechart其他相关的类,添加方法在之前已经讲过,不再重复。1.2. 引入必要的头文件其实之前的方法比较麻烦,更简单就是通过类向导,导入类型库的类如图进入类向导,选择添加类按钮的下拉菜单,选择类型库中的MFC类选择teechart5即可暂时引入#include CSeries.h#include CAxis.h#include CAxes.h#include CLegend.h需要还可以继续在之后引入-2. teechart 画图 - 折线图TeeChart

    7、画图步骤一般是先获得图线序列CSeries,再给Series添加点;添加点可以用函数AddXY,或者AddArray。AddArray要比AddXY的效率高出很多,其比较可见 TeeChart绘图控件 - 之三 - 提高绘图的效率2.1 清除图形在画线之前把图形清除一下,否则会覆盖,清除可用CSeries的函数Clear();但是当添加多个Series后要对所有Series都clear,这是很蛋疼的,因为你有时都不知道有多少个Series,这样可以先获得Series的总数在clear代码如下 for(longi=0;im_TeeChart.get_SeriesCount();i+)(CSeri

    8、es)m_TeeChart.Series(i).Clear();通过CTchart 的get_SeriesCount函数获得所有图像序列,再全部清除,这个函数经常用到,可用定义为类成员函数,这里是个对话框CTChartDlgvoidCTChartDlg:ClearAllSeries(void)for(longi=0;im_TeeChart.get_SeriesCount();i+)(CSeries)m_TeeChart.Series(i).Clear();好了现在开始说说怎么画折线图2.2 普通连线图一般我们画的图都属于这种,就是把点连接起来,选择fast line 的 Normal,就是普通

    9、连线图在需要画图的地方先要获得曲线序列Series,然后通过画图函数AddXY,或者AddArray作图。2.2.1 普通线图 - AddXY下面演示AddXY的方法AddXY就是一个一个加入点,在点数不多,且需要动态显示的时候是不错的选择。点数多的情况下嘛,那就还是用AddArray了先看看AddXY constUINTnDATALENGTH=100;doubledDatanDATALENGTH;for(inti=0;inDATALENGTH;i+)dDatai=100 * sin(float)i)*cos(float)4*i);/ClearAllSeries();CSeries lineS

    10、eries=(CSeries)m_TeeChart.Series(0);lineSeries.Clear();/在最前面加上ClearAllSeries(ClearAllSeries是自己写的函数)就不用了for(inti=0;inDATALENGTH;i+)lineSeries.AddXY(double)i,dDatai,NULL,0);由于在TeeChart里,只加了一个FastLine,所以Series(0)就算Fast Line,代码首先获得图像序列m_TeeChart.Series(0);然后再调用这个序列来作图,作图前先清空图像,用ClearAllSeries()也可以然后就是一个

    11、点一个点的往里加了做出来的效果:AddXY的第一个参数是x点坐标,第二个是y点坐标,第三个参数是为了使x坐标特殊显示,这是会替换掉x坐标的显示内容,如我想显示“点xx“可以这样CStringstr;for(inti=0;inDATALENGTH;i+)str.Format(_T(点%d),i);lineSeries.AddXY(double)i,dDatai,str,0);第四个参数在线图里不起作用,在柱状图里可以设置颜色2.2.2 普通线图 - AddArray在数据量特别大时,强烈建议使用AddArray函数AddArray的函数声明如下void AddArray(long ArraySi

    12、ze, VARIANT& YArray, VARIANT& XArray);x,y是两个VARIANT的数据类型,VARIANT有个类型是VT_ARRAY可以给VARIANT赋一个数组进去具体操作如下:方法1:constUINTnDATALENGTH=100;doubledDatanDATALENGTH;for(inti=0;inDATALENGTH;i+)dDatai=100*sin(float)i)*cos(float)4*i);/声明如下数据:VARIANT vAX,vAY;SAFEARRAY*psax;SAFEARRAY*psay;SAFEARRAYBOUND rgsabound;/初

    13、始化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就是指doublevAX.parray=psax;/把内容加入VARIANT中vAY.vt=VT_ARRAY|VT_R8;vAY.parray=psay;/这时VARIANT 就可以加入数据了doubledtemp;/用来临时存放x坐标

    14、for(longi=0;inDATALENGTH;i+)dtemp=i;SafeArrayPutElement(psax,&i,&dtemp);dtemp=dDatai;SafeArrayPutElement(psay,&i,&dtemp);/更简单写法/SafeArrayPutElement(psay,&i,dData+i);/开始画图CSeries lineSeries=(CSeries)m_TeeChart.Series(0);lineSeries.Clear();lineSeries.AddArray(nDATALENGTH,vAY,vAX);方法2:这时我看TeeChart官方实例找

    15、到的方法,相对简单点COleSafeArray XValues;COleSafeArray YValues;DWORDnumElements=nDATALENGTH;/ 创建安全数组XValues.Create(VT_R8,1, numElements);YValues.Create(VT_R8,1, numElements);/ 初始化longi;doubledval;for(i=0; iGetCheck()legend.put_Visible(TRUE);elselegend.put_Visible(FALSE);效果:不用代码的话可以通过设置控件属性明显,这没有代码灵活2.4 改变线图颜

    16、色默认设置是红,我要设置成其他颜色可以用put_Colour如上代码的lineSeries最后加一个,就会变成RGB(255,0,255)的颜色了lineSeries.put_Color(RGB(255,0,255);效果:3. teechart 画图 - 柱状图3.1 添加柱状图这时会多一个图形注意这里默认是绿色的,等下会发现画出来的不一样3.2 AddXY方法和线图没什么区别,直接上码:constUINTnDATALENGTH=20;doubledDatanDATALENGTH;for(inti=0;inDATALENGTH;i+)dDatai=abs(100*sin(float)i);/

    17、ClearAllSeries();CSeries barSeries=(CSeries)m_TeeChart.Series(1);for(inti=0;inDATALENGTH;i+)barSeries.AddXY(double)i,dDatai,NULL,0);注意不是Series(0)了我擦那效果加个abs,好看很多3.3 改变柱状图的颜色为啥是黑色的?设置了绿色的,我一开始也以为坑爹的设置没有用,后来研究了一下发现时AddXY的第四个参数起作用的上面的图我们是这样加的barSeries.AddXY(double)i,dDatai,NULL,0);第四个参数0就相当于RGB(0,0,0),

    18、这第四个参数就是设置颜色的了把程序稍作修改for(inti=0;iGetCheck()SeriesMarks.put_Visible(TRUE);elseSeriesMarks.put_Visible(FALSE);效果:3.5 AddArray 给柱状图添加数据和line一样constUINTnDATALENGTH=20;doubledDatanDATALENGTH;for(inti=0;inDATALENGTH;i+)dDatai=abs(100*sin(float)i);COleSafeArray XValues;COleSafeArray YValues;DWORDnumElement

    19、s=nDATALENGTH;/ 创建安全数组XValues.Create(VT_R8,1, numElements);YValues.Create(VT_R8,1, numElements);/ 初始化longi;doubledval;for(i=0; inDATALENGTH; i+)dval=i;XValues.PutElement(&i,&dval);dval=dDatai;YValues.PutElement(&i,&dval);/YValues.PutElement(&i, dData+i);/ClearAllSeries();CSeries lineSeries=(CSeries)

    20、m_TeeChart.Series(1);lineSeries.AddArray(nDATALENGTH,YValues,XValues);这时出现的图像就是默认的颜色了想改颜色!没问题,还是用put_ColorbarSeries.put_Color(RGB(255,0,0);TeeChart绘图控件 - 之三 - 提高绘图的效率TeeChart是个很强大的控件,其绘图能力之强,其他控件难以比拟,但是有个问题就是他的绘图速度,其实TeeChart绘图速度还是很快的,只是大家一直都没正确运用其功能所以导致绘图速度慢的假象。下面说说影响绘图速度的两个主要因素1、当点数特别多时不需要绘出全部点(性能

    21、提升不大)TeeChart绘图控件 - 之一文章里已经讲过,可以设置只绘出部分点。设置方法如图:这个选项能一定程度的提升画图速度。提升多少,可看看如下实例:163840个随机点,取消Draw All时效果,使用AddXY函数,耗时1092毫秒163840个随机点,取消Draw All时效果,使用AddXY函数,耗时1217毫秒可见这个效果并不明显,但是显示效果却很明显2.通过画图函数来改变画图速度TeeChart的AddXY函数时画图最慢的函数,但是却好多人使用,可能是简单的原因吧,我专门做了一个程序来测试AddXY和AddArray函数的效率,发现效率几乎差30倍2.1AddXY函数:Add

    22、XY 函数每次调用都要刷新,所以画图速率相当低如上图所示的界面画图(AddXY)按钮实现如下randf是一个产生随机数的函数实现见源文件,m_nPointNum是何文本编辑框关联的int型数据IDC_STATIC_T是文本标签的IDvoidCTeeChartDlg:OnBnClickedButtondraw()CSeries ChartSpeed=(CSeries)m_Chart.Series(0);UpdateData(TRUE);if(m_nPointNum=0)MessageBox(_T(数据点数不能小于0);return;DWORDdwTimeS,dwTimeE;CStringstr(_T();unsignedi(0);double*pDataX=NULL;double*pDataY=NULL;/分配内存pDataX=newdoublem_nPointNum;pDataY=newdoublem_nPointNum;for(i=0;i(unsigned)m_nPointNum;i+)pDataYi=randf(-20,20);pDataXi=i;/由于需要计算时间,


    注意事项

    本文(VS使用TeeChart绘图控件.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开