VC6.0中画图用的chart控件
- 格式:pdf
- 大小:330.90 KB
- 文档页数:6
详解CC++QTQChart绘制组件应⽤QtCharts 组件是QT中提供图表绘制的模块,该模块可以⽅便的绘制常规图形,Qtcharts 组件基于GraphicsView模式实现,其核⼼是QChartView和QChart的⼆次封装版。
在使⽤绘图模块时需要在pro⽂件中包含QT += charts来引⼊绘图类库。
然后还需在头⽂件中定义QT_CHARTS_USE_NAMESPACE宏,这样才可以正常的使⽤绘图功能。
⼀般情况下我们会在mainwindows.h头⽂件中增加如下代码段。
#include <QMainWindow>#include <QtCharts>QT_CHARTS_USE_NAMESPACE// 解决MSVC编译时,界⾯汉字乱码的问题#if _MSC_VER >= 1600#pragma execution_character_set("utf-8")#endif由于QT中不存在单独的绘图画布,因此在绘图前我们需要在窗体中放⼊⼀个graphicsView组件。
并在该组件上右键将其提升为QChartView输⼊需要提升的组件名称,即可将该组件提升为全局绘图组件。
绘制折线图: 折线图的使⽤⾮常⼴泛,如下代码我们⾸先使⽤InitChart()将画布初始化,接着调⽤SetData()实现在画布中填充数据,完整代码如下。
#include "mainwindow.h"#include "ui_mainwindow.h"// 初始化Chart图表void MainWindow::InitChart(){// 创建图表的各个部件QChart *chart = new QChart();chart->setTitle("系统性能统计图");// 将Chart添加到ChartViewui->graphicsView->setChart(chart);// this->setCentralWidget( ui->graphicsView);ui->graphicsView->setRenderHint(QPainter::Antialiasing);// 设置图表主题⾊ui->graphicsView->chart()->setTheme(QChart::ChartTheme(0));// 创建曲线序列QLineSeries *series0 = new QLineSeries();QLineSeries *series1 = new QLineSeries();series0->setName("⼀分钟负载");series1->setName("五分钟负载");// 序列添加到图表chart->addSeries(series0);chart->addSeries(series1);// 其他附加参数series0->setPointsVisible(false); // 设置数据点可见series1->setPointLabelsVisible(false); // 设置数据点数值可见// 创建坐标轴QValueAxis *axisX = new QValueAxis; // X轴axisX->setRange(1, 100); // 设置坐标轴范围axisX->setTitleText("X轴标题"); // 标题axisX->setLabelFormat("%d %"); // 设置x轴格式axisX->setTickCount(3); // 设置刻度axisX->setMinorTickCount(3);QValueAxis *axisY = new QValueAxis; // Y轴axisY->setRange(0, 100); // Y轴范围(-1 - 20)axisY->setTitleText("Y轴标题"); // 标题// 设置X于Y轴数据集chart->setAxisX(axisX, series0); // 为序列设置坐标轴chart->setAxisY(axisY, series0);chart->setAxisX(axisX, series1); // 为序列设置坐标轴chart->setAxisY(axisY, series1);// 图例被点击后触发foreach (QLegendMarker* marker, chart->legend()->markers()){QObject::disconnect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked())); QObject::connect(marker, SIGNAL(clicked()), this, SLOT(on_LegendMarkerClicked())); }}// 为序列⽣成数据void MainWindow::SetData(){// 获取指针QLineSeries *series0=(QLineSeries *)ui->graphicsView->chart()->series().at(0);QLineSeries *series1=(QLineSeries *)ui->graphicsView->chart()->series().at(1);// 清空图例series0->clear();series1->clear();// 赋予数据qreal t=0,intv=1;for(int i=1;i<100;i++){series0->append(t,i); // 设置轴粒度以及数据series1->append(t,i+10); // 此处⽤随机数替代t+=intv; // X轴粒度}}// 将添加的widget控件件提升为QChartView类MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {ui->setupUi(this);InitChart();SetData();}MainWindow::~MainWindow(){delete ui;}// 图例点击后显⽰与隐藏线条void MainWindow::on_LegendMarkerClicked(){QLegendMarker* marker = qobject_cast<QLegendMarker*> (sender());switch (marker->type()){case QLegendMarker::LegendMarkerTypeXY:{marker->series()->setVisible(!marker->series()->isVisible());marker->setVisible(true);qreal alpha = 1.0;if (!marker->series()->isVisible())alpha = 0.5;QColor color;QBrush brush = marker->labelBrush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setLabelBrush(brush);brush = marker->brush();color = brush.color();color.setAlphaF(alpha);brush.setColor(color);marker->setBrush(brush);QPen pen = marker->pen();color = pen.color();color.setAlphaF(alpha);pen.setColor(color);marker->setPen(pen);break;}default:break;}}效果如下所⽰:绘制饼状图: 饼状图⽤于统计数据的集的占⽤百分⽐,其绘制⽅式与折线图基本⼀致,代码如下。
TeeChart用于VC绘制曲线上网找了一个teechart8的Activex版本,在VC6下使用正常,感觉功能挺强大的,于是决定认真用一用,我是完全完全的新手,请高手们直接忽略我,或者给我提些好的建议。
我得到的是一个teechart8.ocx文件,这是Activex的文件,使用之前先注册一下,将该文件放入系统目录下,然后打开命令提示符,或者直接在运行窗口输入:regsvr32 T eeChart8.ocx,然后会有一个注册成功的提示框,说明我们的ActiveX控件注册成功,在VC6下就可以使用了。
如果不想使用了,可以使用regsvr32 -u TeeChart8.ocx 解除对teechart8的注册。
我的第一个任务是熟悉teechart控件。
首先新建一个基于MFC的exe工程,选择对话框,其他默认。
进入工程以后可以看到类视图中只有系统生成的默认的几个类,我先在类视图中在工程名上点右键新建两个文件夹,一个叫src,一个叫tee,然后把默认生成的几个类(dlg,app,about三个类)拖放到src文件夹中。
做这一步实际上没有什么实质的意义,只是为了看起开比较方便,因为一会儿添加了teechart8以后会有很多的类添加进来,看起来非常困难,所以先提前把他们分开。
闲话不多说,进入资源视图,点击主对话框后,删除todo那个静态文本。
下一步我们要在这个对话框上放置一个teechart图表,但是工具栏中没有,所以需要先添加一下。
依次点击工程-》增加到工程-》components and controls,进入对话框后选择register ed ActiveX controls,找到TeeChart Pro Activex control v8后点击insert,会弹出添加类的对话框,左边的列表里面是可以选择添加的类,现在我还不太了解具体类的作用,所以只好一并添加了,点击确定以后回到资源视图会发现工具栏下面多累一个圆形的小图标,这就是我们的teechart8控件了。
VC中使用TeeChart绘制实时曲线上网找了一个teechart8的Activex版本,在VC6下使用正常,感觉功能挺强大的,于是决定认真用一用,我是完全完全的新手,请高手们直接忽略我,或者给我提些好的建议。
我得到的是一个teechart8.ocx文件,这是Activex的文件,使用之前先注册一下,将该文件放入系统目录下,然后打开命令提示符,或者直接在运行窗口输入:regsvr32 T eeChart8.ocx,然后会有一个注册成功的提示框,说明我们的ActiveX控件注册成功,在VC6下就可以使用了。
如果不想使用了,可以使用regsvr32 -u TeeChart8.ocx 解除对teechart8的注册。
我的第一个任务是熟悉teechart控件。
首先新建一个基于MFC的exe工程,选择对话框,其他默认。
进入工程以后可以看到类视图中只有系统生成的默认的几个类,我先在类视图中在工程名上点右键新建两个文件夹,一个叫src,一个叫tee,然后把默认生成的几个类(dlg,app,about三个类)拖放到src文件夹中。
做这一步实际上没有什么实质的意义,只是为了看起开比较方便,因为一会儿添加了teechart8以后会有很多的类添加进来,看起来非常困难,所以先提前把他们分开。
闲话不多说,进入资源视图,点击主对话框后,删除todo那个静态文本。
下一步我们要在这个对话框上放置一个teechart图表,但是工具栏中没有,所以需要先添加一下。
依次点击工程-》增加到工程-》components and controls,进入对话框后选择register ed ActiveX controls,找到TeeChart Pro Activex control v8后点击insert,会弹出添加类的对话框,左边的列表里面是可以选择添加的类,现在我还不太了解具体类的作用,所以只好一并添加了,点击确定以后回到资源视图会发现工具栏下面多累一个圆形的小图标,这就是我们的teechart8控件了。
VC6中调用 ProEssentials v5图表组件实现科学图表绘制1 ProEssentials v5简介:ProEssentials v5是应用于windows 服务器端和客户端开发的一系列图表组件,它是对绘制图表以及图表分析功能所需要的数据和方法的简单封装。
可以提供Winforms、Webforms、ActiveX、VCL和DLL五种界面。
它的图表类型很多,包括:一般图表、科学图表、3维图表、极坐标图表、饼状图表,几乎覆盖了所有常见的图表类型。
我们可以很方便的调用ProEssentials v5的函数库,添加绘制图表的功能,并可以对图表进行分析,如:回归,求最大值,拟合曲线等。
我们还可以很方便的将图表文件的数据文件进行保存,或者导出我们希望格式的图片,如bmp、jpg、png。
注:一般图表与科学图表之间的区别在于,一般图表仅提供一维坐标数据绘图,而另一维坐标数据是等间距的。
科学图表提供二维坐标数据,绘制任意的散点数据。
2 具体应用方法:(1)无论开发的是OCX的应用程序、DLL的应用程序还是VCL的应用程序,首先要做的就是根据开发环境的操作系统类型,拷贝PEGRP32C.DLL到相应的在本地硬盘系统盘中去。
如果是win95或者win98操作系统,拷贝PEGRP32C.DLL到System 目录下;如果是win2000操作系统,拷贝PEGRP32C.DLL到System32目录下。
PEGRAPHS.HLP文件是可选的(2)工程里面添加头文件Pegrpapi.h。
选择需要调用的函数,完成图表的绘制功能。
在此简介,ProEssentials v5函数和变量的命名规则。
以PEP_为前缀的变量类型如下:PEP_b Boolean (4 bytes)PEP_n Integer (4 bytes)PEP_dw Double Word (4 bytes)PEP_sz Null Terminated array of characters.PEP_f Single (4 bytes) or Double (8 bytes) floating point.PEP_na Array of Integer (4 bytes)PEP_dwa Array of Double Word (4 bytes)PEP_sza Array of Null Terminated strings.PEP_fa Array of Single (4 bytes) or Double (8 bytes) floating point. PEP_struct Various structures要用DLL调用来设定获取以上变量类型的值,可以根据以上变量类型的前缀来判断应该:PEP_b PEnset / PEngetPEP_n PEnset / PEngetPEP_dw PElset / PElget (16 bit) PEnset / PEnget (32 bit)PEP_sz PEszset / PEszget.PEP_f PEvset / PEvgetPEP_na PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell,PEvgetcellExPEP_dwa PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell,PEvgetcellExPEP_sza PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell,PEvgetcellExPEP_fa PEvset, PEvsetcell, PEvsetcellEx / PEvget, PEvgetcell,PEvgetcellExPEP_struct PEvset, / Pevget(3)选择适当的变量,将数据赋予这些变量。
用Chart控件绘制动态图表---- 进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量。
ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用。
本文仅以VC++为例说明Chart控件的使用。
---- Chart控件指Mschart.ocx(5.0版)或Mschrt20.ocx(6.0 版),是Visual Studio自带的ActiveX控件之一,其属性、事件很多,功能非常强大,可实现柱状直方图、曲线走势图、饼状比例图等,甚至可以是混合图表,可以是二维或三维图表,可以带或不带坐标系,可以自由配置各条目的颜色、字体等等。
一安装和使用Chart控件----在用到Chart控件的项目中安装该控件:从Project->Add to Project ->Components And Controls->Registered Active Xcontrols,选择Chart控件,则ClassWizard会生成相应的C++类,其中类CMSChart是由CWnd派生来的,它是Chart 控件的主要类,其他的类全部是由COleDispatchDriver派生来,控制控件中的相应对象,完成各部分相关功能,如CvcAxis类是实现坐标轴相关功能的源代码。
同时在项目的控件工具箱上会出现代表Chart控件的按钮,使用时把Chart控件按钮从工具箱拖到对话框中,调整大小即可。
----Chart控件至少有45个属性、9个方法、49个事件,在这里就不一一列举了。
---- 在设计中,我们可以在主要属性页里修改各属性的属性值:右击对话框窗口中的Chart控件,选择“Properties”菜单项,就会弹出主要属性页对话框,对其中各属性值进行设置。
有些属性在主要属性页里没有列出,只能编程修改。
另外要动态绘制图表,必须掌握对控件的编程控制。
---- 首先在对话框类中定义控件变量,以便编程时操纵控件。
C# 中使用MSChart 组件
2013/03/17 0 这两天在研究怎样在C# 中使用MSChart 组件来绘制柱状、饼状图形,由于以前没有接触过MSChart 组件,关于这方面的资料也没有;于是就到
网上狂搜一把,找到了一些相关的资料,但资料都写的不完整;现在将自己摸索的
心得整理一下:
1、将MSChart control 的引用添加到工具栏。
选择“工具- 选择工具箱项”,然后切换到“COM组件”页,选择“Microsoft Chart Control 6.0 (OLEBD)”,点击确定后就可以成功加载控件了。
2、添加引用,using MSChart20Lib;
3、定义图表样式
//图表标题
MSChartBar.TitleText = 年度统计图表
//页底说明
MSChartBar.Footnote.Text = 说明:年度柱状统计图表
//设置图例
MSChartBar.ShowLegend = true;
MSChartBar.Legend.Location.LocationType = VtChLocationType.VtChLocationTypeRight;
//设置Plot 的Shadow
MSChartBar.Plot.Backdrop.Shadow.Style = VtShadowStyle.VtShadowStyleDrop; //设置Shadow 的大小
MSChartBar.Plot.Backdrop.Shadow.Offset.Set(60, 60);。
本文为DataGrid控件在VC6.0中使用的基本范例,主要功能为插入一行数据并在控件中显示,及删除一行数据并在控件中显示。
1 在VC6.0中建立MFCApp(exe)工程;2 导入DataGrid控件:路径:Project-->Add To Project-->Conponents and Controls选择集合:选择组件,选好后别忘记“Insert”:演示目前的功能仅需要选择图片中的三个类就可以了:这时组件就被导入到工具箱中了,在Form中画好后再为其添加一个控件变量m_ctrlDataGrid1;3 实现数据绑定:对于数据库的操作,我在这里使用了ADO来执行;要使用ADO的话不要忘记在你的stdafx.h中将其导入:#import "c:/program files/common files/system/ado/msado15.dll"我使用的是SQLSERVER2005 EXPRESS,也就是附带在VS2005中的开发版本,数据库连接字符串的设置如下:CString strSqlLink = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist SecurityInfo=False;Initial Catalog=SalManSystem;Data Source=.//SQLEXPRESS";注意:Data Source的设置对比2005之前版本的设置略有不同;对话框初始化时的数据绑定代码:BOOL CTestDATAGRIDDlg::OnInitDialog(){//................以上省略若干行// TODO: Add extra initialization hereCString strConnection;strConnection.Format(_T(sqllink));m_ADODb.Open((LPCTSTR)strConnection); //打开程序数据库m_Rs.SetDatabase(&m_DBCn);m_Rs.Open(_T("select * from em_baseinfo;"));m_ctrlDataGrid1.SetCaption(_T("Add Employeer")); //设置标题m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset( )); //绑定数据源return TRUE; // return TRUE unless you set the focus to a control}4 插入操作:这个非常简单,代码如下:BOOL CTestDATAGRIDDlg::InsertEMInfo(){CString strSQL;strSQL.Format( _T("INSERT INTO em_baseinfo(em_name, em_id, em_s ex, em_edu)VALUES('%s', '%s', '%s', '%s');"), m_strName, m_strID, m_strSex, m_strEDU );m_Rs.Open((LPCTSTR)strSQL);m_Rs.Open(_T("select * from em_baseinfo;"));m_ctrlDataGrid1.SetRefDataSource((LPUNKNOWN)m_Rs.GetRecordset( ));}5 删除操作:这个需要稍微花点心思。
MFC中MSChart的使用示例最近由于工作的原因,接触了一些MSChart的东西。
在查看的资料的时候发现,网上很多资料是关于在VB和C#中利用MSChart实现图表的绘制,但关于在MFC中利用MSChart 实现图表绘制的资料甚少,因此在做的过程中遇到了很多问题,下面对MFC中使用MSChart 进行简单的小结:1.添加MSChart点击VS中的“工具-选择工具箱-COM组件”,找到Microsoft Chart Control,version 6.0(OLEDB)并勾选(注:如果COM组件中不存在该项,便可自行安装,从网上下载MSChart.exe 和MSCHART20.OCX。
首先安装MSChart.exe,然后注册MSCHART20.OCX,如果是win7下要用管理方式运行注册,方可成功)。
如下所示:2.在对话框中添加MSChart控件这个比较简单,在此不再赘述,如下所示:3.属性设置MSChart控件的属性及说明如下,可根据需要自行设置。
ChartAreas:增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。
AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。
AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。
AlignWithChartArea:参照对齐的绘图区名称。
InnerPlotPosition:图表在绘图区内的位置属性。
Auto:是否自动对齐。
Height:图表在绘图区内的高度(百分比,取值在0-100 )Width:图表在绘图区内的宽度(百分比,取值在0-100 )X,Y:图表在绘图区内左上角坐标Position:绘图区位置属性,同InnerPlotPosition。
Name:绘图区名称。
Axis:坐标轴集合Title:坐标轴标题TitleAlignment:坐标轴标题对齐方式Interval:轴刻度间隔大小IntervalOffset:轴刻度偏移量大小MinorGrid:次要辅助线MinorTickMark:次要刻度线MajorGrid:主要辅助线MajorTickMark:主要刻度线DataSourceID:MSChart的数据源。
因工作需求,要用到TeeChart控件,发现TeeChart在MFC下的资料很少。
以下一些TeeChart的用法,大多是从网上七拼八凑得到的,还有一些是我自己摸索的,以下代码经均本人测试,测试环境vc++6.0。
TeeChart的安装方法网上有很多,这里不再赘述。
把TeeChart控件添加到工程中后,将其拖到对话框中,然后通过ClassWizard定义一个类变量m_TeeChart。
TeeChart简介:TeeChart的主类是TChart,TChart类存在众多的属性方法和事件,下面介绍一些主要的属性。
1、 TChart.Height:图表的高度;可用下列语句获取或设置图表的高度1 m_TeeChart.SetHeight(100); //设置图表高度为1002long Height_size = m_TeeChart.GetHeight(); //获取当前图表的高度2、TChart.Width:图表的宽度;用法与高度一致,就不在赘述3、TChart.Header:图表的标题;图表可以拥有多级标题,可用下列语句设置图表的标题以及追加标题1 m_TeeChart.GetHeader().GetText()2 .SetItem(0, COleVariant(“TeeChart 使用范例”));3 m_TeeChart.GetHeader().GetText().Add(COleVariant(“追加的标题”));4、TChart.Series:序列;Series是要显示的数据的主体,在一个图表中可以有一个或者多个序列,每一个序列可以有不同的显示类型,例如Line、Bar、Pic等等,稍后将单独描述。
5、TChart.Axis:坐标轴;用来设置坐标轴的属性1 m_TeeChart.GetAxis().GetBottom().GetTitle().SetCaption("X轴的标题");2// 设置X轴的标题,准确的说应该是设置底部轴的标题3 m_TeeChart.GetAxis().GetLeft().GetTitle().SetCaption("Y轴的标题");4// 设置左侧轴的标题5 m_TeeChart.GetAxis().GetBottom().SetMinMax(0, 100);6//设置X轴的范围6、TChart.Legend:图例,图例就是下图中右侧的部分下列语句可以将图列隐藏1 m_TeeChart.GetLegend().SetVisible(FALSE); //隐藏图例画图需要添加序列,添加序列有两种方式。
MSChartMSChart的安装使用最近需要为程序显示一些柱状图、线图之类的,查了一下微软的mschart不错,功能强大。
可是自vc6.0之后mschart控件就从ms的IDE里去掉了,如果用只能自己下载安装。
安装mschart需要1 .net framewrok 3.5 sp1(注意是sp1),没有安装的话就去下载吧,完整包大概200多M2 安装MSChart.exe MSChart_VisualStudioAddOn.exe 下载mschrt20.ocx到C:\WINDOWS\system32目录下。
命令行运行regsvr32 mschrt20.ocx注册控件3 在vs2005之后的平台上,你要么在class view下add class->MFC Class from ActiveX Control然后有两个,你可以选择registy然后选择ms mschart 6.0(oled),这样只能出现一个类CMSCHART,或者选择File然后浏览mschrt20.ocx,这里面生成了很多类,你全部添加进去,最后就可以用了。
第二、你可以在一个MFC dialog上insert axtivex control或者toolbox 选择choose item->com选择组件让它出现在工具箱中,这样也可以有控件。
我们自己选择生成的很多类,跟网上有示例的类函数名称上有所不同,可能会给使用带来麻烦。
其实最简单的就是找到一个Demo把里面相关的CMSCHART和其它相关的十几个类都拷贝到我的工程文件夹里,再添加进来,就ok了。
网上很多例子可供参考,比如:/document/viewdoc/?id=959关于遇到的一些问题。
在设置图形类型的时候,m_chart.SetChartType(1|2);显示出2D曲线图,而我们用m_chart.SetChartType(16);的时候如果你只设置了m_chart.SetColumnCount(1); 就不会显示,因为16的散列图需要的是一对坐标点,你至少需要设置m_chart.SetColumnCount(2);为2。
TeeChart在VC中实时曲线绘制的应用一:TeeChart介绍TeeChart Pro是一款提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择。
提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供您选择。
提供上百种2D和3D图形风格、40种数学和统计功能、加上无限制的轴和22种调色板组件供选择,TeeChart还包括一个强大的、完整的编辑对话框,几乎可用于每个组件和子组件,允许你快速的设计复杂图表应用程序。
图表编辑器通过TeeCommander组件进一步得到增强,它提供一次点击访问图表编辑器和共同特征。
二:主要特性●是32位ActiveX控件,可以在VB、Delphi、MS Office等多种编程环境下使用;●可以直接存取ODBC数据源;●具有11种标准的和9种扩展的Series类型;●提供16种统计函数;●支持2D和3D效果,支持缩放和滚动;●可以将图表输出为Bitmap、Metafile、JPEG 或者Native Chart 格式;●支持用户绘图和打印;●是集成化的设计工具;●提供例子和在线帮助。
三:TeeChart类的属性和方法TeeChart的主类是TChart。
TChart中使用了众多的属性方法和事件,随着版本的升级将越来越丰富。
这使得TChart具有非常强大的功能。
本文仅简单地介绍其中一些重要类的属性和方法。
●TChart.Height:图表的高度(像素);●TChart.Width:图表的宽度(像素);●TChart.Header:图表的题头(Ititles类);●TChart.Series:序列(Series类的数组);●TChart.Axes:坐标轴(Iaxes类);●TChart.Legend:图例(Legend类);●TChart.Panel:面板(Ipanel类);●TChart.Canvas:画布(Canvas类)。
v1.0 可编辑可修改Chart控件说明1 Chart控件说明Chart控件是微软的一款图形化控件,主要是用于做出各种类型的图表。
比如:条形图,柱形图,折线图,饼状图,散点图等,实现各种统计功能的需要。
在工具箱—> 数据下面找到Chart控件,直接拖到界面上即可。
如下图:Chart控件常用的属性说明ChartAreas:图表区域。
可以理解为是一个图表的绘图区域。
比如:你想在一个图上呈现两个不同属性的内容,一个是生产合格率走势图,一个是产品数量图,那么你在一个图表区域同时绘制这两个图,显得有些不太合理。
这种情况,可以建立两个ChartArea,一个用于呈现走势,一个用于呈现数量。
当然,该控件并不限定有多少个绘图区域,可以根据需要添加。
每个绘图区域都有它自己的属性,方法,绑定数据等,各个区域之间互不影响。
需要注意的是:ChartArea只表示一个绘图区域,它本身并不包含图形的属性数据等。
Series:图表序列。
它是整个绘图中最关键的内容,就是实际的绘图数据区域,实际呈现的图形形状,就是由此集合中的每一个图表来构成的,可以往集合里面添加多个图表,每一个图表可以有自己的绘制形状、样式、独立的数据等。
每一个图表,你可以指定它的绘制区域(属于哪个ChartArea),让此图表呈现在某个绘图区域,也可以让几个图表在同一个绘图区域叠加。
Legends:图表图例。
它是用于说明图形的各个线或者各种颜色代表的意思,便于用户理解该图的含义。
Titles:标题集合。
一个ChartArea上可以添加多个标题,也可设置不同的样式,位置等。
DataSource:数据源。
用于绑定到Chart控件的数据。
Palette:调色板。
用于调整显示的颜色样式。
详细属性说明ChartAreas主要属性如下:在Chart控件的属性下可以找到ChartAreas,打开可以看到如下界面,在这里可以设置它的一些属性。
AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。
MSchart控件在C++6.0和Microsoft visual studio 2005中使用都需要额外安装控件,但是Microsoft visual studio 2010中已经内含此控件,所以此教程用于Microsoft visual studio 2010版本使用。
1:新建MFC工程,此处可以选择对话框程序,如图1所示,其余设置可默认。
图12:MSChart控件位于工具箱下端的常规控件选项卡中,若是工具箱面板中未找到,可以右击工具箱→选择项→COM组件中选择Microsoft Chart Control,version5.0。
控件位置及图标如图2所示。
注:此处除Microsoft Chart Control,version5.0外,还有Microsoft Chart Control 6.0,所使用的是version5.0,但添加的类却是6.0,对于此处差别还不太清楚。
图23:添加Microsoft Chart Control控件到对话框程序中,如图3所示。
图34:点击Microsoft Chart Control控件,右端出现属性窗口,如图4所示,在此处可以对于此控件进行设置,下面对于各个控件属性含义进行具体讲解。
图4更改属性页内属性,属性页位于属性列表上端快捷键最后一位,属性页如图5所示。
图5属性列表主要包括以下几个方面的设置:Chart主要包括对于图表类型的选择,此例中主要使用的是Line(2D),选项Show legend 为显示图例,在此例中需要进行勾选。
设置如图6所示。
图6Axis主要是对于各个坐标轴的设置,其中Axis可以进行X Axis、Y Axis及Second Y Axis 三个轴的选择,其中Show scale选项可以选择对应轴是否显示,Automatic scaling可以对于坐标轴上最大值、最小值、标注标签间隔和每个间隔细分格数(对于X及Y轴是不同的,X轴若是100为一个格,50需要为一个小格,Y轴Major divisions对应的是大格格数,Minor divisions对应小格格数)。
少将TeeChart图表控件的介绍网上搜一下就能了解个大概,推荐大家看软件安装完毕后的产品说明文档(有点英文基础就能看懂)。
国内出了一本介绍它的书,编程环境是Delph和C++Builder,本例用VC++,以节省感兴趣的朋友看产品说明文档的时间(VB6也可以,用起来比较简单方便)。
第一步,启动VC++建立一个基于对话框程序的工程,下面是几个步骤的截图,相信用过VC++的朋友都很熟悉。
这样可以获得一个对话框资源,如下图:第二步,插入TeeChartPro的ActiveX控件(此控件在TeeChartPro安装后就注册好了),过程如下图:这时控件组工具栏的尾部会出现一个新的控件:将这个TeeChartPro控件拖放到对话框里,调整大小到合适为止。
第三步,设置TeeChart控件的属性,本例程目的是画一个随机曲线。
上一步已经在对话框上放置了TeeChart图表控件,如下图:选定TeeChart控件,右键选择Properties:点击Edit Chart...按钮,设置控件属性:选择Series表单,点击Add...按钮,加入一条Fast Line曲线:选择Legend表单,去掉Visible单选框里面的勾:选择3D表单,去掉3 Dimensions单选框里面的勾:选择Tools表单,添加TeeChart工具,并作相关设置:设置完毕后,对话框变为:第四步,加入程序代码。
在CMyTeeChartDlg类的OnInitDialog()函数里添加下面的代码: // TODO: Add extra initialization herem_ctrlChart.Series(0).Clear();m_ctrlChart.GetPage().SetMaxPointsPerPage(60);srand((int)time(0));char strTime[25];for(int i=0; i<60; i++){itoa(i,strTime,10);int dTemper = rand()%100;m_ctrlChart.Series(0).AddXY(i,dTemper,strTime,RGB(255,0,0));}m_ctrlChart.GetAxis().GetLeft().SetMinMax(0, 100);这段代码生成60个0~100之间的随机数,作为曲线显示数据。