文档库 最新最全的文档下载
当前位置:文档库 › Microsoft Visual Studio 2010中MSChart控件用于仿真曲线样例

Microsoft Visual Studio 2010中MSChart控件用于仿真曲线样例

Microsoft Visual Studio 2010中MSChart控件用于仿真曲线样例
Microsoft Visual Studio 2010中MSChart控件用于仿真曲线样例

MSchart控件在C++6.0和Microsoft visual studio 2005中使用都需要额外安装控件,但是Microsoft visual studio 2010中已经内含此控件,所以此教程用于Microsoft visual studio 2010版本使用。

1:新建MFC工程,此处可以选择对话框程序,如图1所示,其余设置可默认。

图1

2:MSChart控件位于工具箱下端的常规控件选项卡中,若是工具箱面板中未找到,可以右击工具箱→选择项→COM组件中选择Microsoft Chart Control,version5.0。控件位置及图标如图2所示。

注:此处除Microsoft Chart Control,version5.0外,还有Microsoft Chart Control 6.0,所使用的是version5.0,但添加的类却是6.0,对于此处差别还不太清楚。

图2

3:添加Microsoft Chart Control控件到对话框程序中,如图3所示。

图3

4:点击Microsoft Chart Control控件,右端出现属性窗口,如图4所示,在此处可以对于此控件进行设置,下面对于各个控件属性含义进行具体讲解。

图4

更改属性页内属性,属性页位于属性列表上端快捷键最后一位,属性页如图5所示。

图5

属性列表主要包括以下几个方面的设置:

Chart主要包括对于图表类型的选择,此例中主要使用的是Line(2D),选项Show legend 为显示图例,在此例中需要进行勾选。设置如图6所示。

图6

Axis主要是对于各个坐标轴的设置,其中Axis可以进行X Axis、Y Axis及Second Y Axis 三个轴的选择,其中Show scale选项可以选择对应轴是否显示,Automatic scaling可以对于坐标轴上最大值、最小值、标注标签间隔和每个间隔细分格数(对于X及Y轴是不同的,X轴若是100为一个格,50需要为一个小格,Y轴Major divisions对应的是大格格数,Minor divisions对应小格格数)。在对于此处设置之前,需要将属性列表中的RowCount值更改,此例需要将横轴分成1000份,所以RowCount值改为1000,同时Row与RowLabel对应更改,此类每100份表示为1格,标注为0.1变化,所以对应于下表进行更改。

X轴及Y轴设置如图7及图8所示,此处不需要Second Y Axis,所以将其Show scale 选项勾选掉。Color可以修改对应轴的颜色,此处不进行解释。

图7

图8

表格形状如图9所示。

图9

Axis Grid主要是对于表格中的网格线进行更改,此处为了更清晰的表示曲线,去除掉所有的网格线,故此例中将Color更改为白色即可。如图10所示。

图10

Series是对于图标中曲线个数进行设置,此处需要先对属性列表进行更改,ColumnCount 是曲线个数,此例共有两条曲线,故此处设置为2,Column及ColumnLabel对应设置,当Column为1时,设置ColumnLabel为y=200x,Column为2时,设置ColumnLabel为y=100x。此处含义是当x轴对应0.1标签时,两个曲线分别对应于20及10,但是其实x轴0.1对应于100Row,这里有相对应关系。Statistics选项卡中,主要可以画出最高最低限度、平均、标准及回归等曲线,此处不用勾选,设置如图11所示。

图11

Series Color对于曲线颜色设置,此处将两条曲线分别设置为红色与绿色,主要更改Color 选项。

Backdrop主要是对于背景的设置,可以设置背景填充色以及边框填充,此例将背景设

置为蓝色,设置如图12所示。

图12

Text及Fonts主要是对于标题、各轴标注等字体内容设置,这些设置可以选择用语句进行,所以此处只将标题字体Title改为仿宋,各轴标签字体Axis Label是改为Time New Roman。

对于属性页设置如上所述,对于属性表中,只需要再将Enabled选项改为FALSE,此处目的是在显示曲线时,不可对控件进行操作。若图例过长从而显示不完全,可以在属性页中,更改Fonts选项卡中的Legend属性即可。

5:添加CMSChart类到工程中,点击类视图中的工程名,右击选项卡中选择添加→类,此处一定要注意,在类视图中添加类和在项目选项卡中添加类是不同的,之前也是因为这个原因而困扰很久,此处位置如图13所示。

图13

在类添加选项卡中双击TypeLib中的MFC类这个类型。在类型库中添加类向导中,选择可用的类型库文件名为Microsoft Chart Control 6.0(SP4),然后点击接口与生产的类中间的添加按钮,设置如图14所示。之后点击完成即可。

图14

此时在类视图中可以发现,已经添加入很多类。

添加工程所需要的头文件,在ChartLearnDlg.h文件(也就是所命名的Dlg头文件)中添加如下头文件。

#include

#importno_namespace

#importno_namespace

#include"CDMSChart.h"

#include"CVcPlot.h"

#include"CVcAxis.h"

#include"CVcValueScale.h"

#include"CVcSeriesCollection.h"

#include"CVcSeries.h"

#include"CVcPen.h"

#include"CVcCategoryScale.h"

#include"CVcColor.h"

#include"CVcDataGrid.h"

#include"CVcBackdrop.h"

#include"CVcFill.h"

#include"CVcBrush.h"

#include"CVcDataPoints.h"

#include"CVcDataPoint.h"

#include"CVcDataPointLabel.h"

#include"CVcAxisTitle.h"

#include"CVcTitle.h"

#include"CVcFont.h"

#include"CVcLegend.h"

#include"CVcMarker.h"

#include"CVcLabels.h"

#include"CVcLabel.h"

#include"CVcSeriesMarker.h"

6:添加变量,右击对话框中的CMSChart控件,选择添加变量选项,设置变量名为m_chart1。设置如图15所示,之后点击完成按钮。

图15

此时编译会出现如图16错误。

图16

点击错误,跳转至错误的位置,需要将m_chart1(0)中的0删除,此错误即可解除。具体原因未明。再编译即可通过。

7:添加函数对于MSChart控件进行初始化设置,此时点击CChartLearnDlg类中的OnInitDialog()函数,在其末端添加代码,网上C++6.0在MSChart控件所使用的函数很多在此版本都是不可以的,所以此处所列的函数只为一些我所使用的函数。

注:此处一些设置可以在属性中直接更改。

(1)添加标题。

m_chart1.put_TitleText(_T("一次曲线"));

(2)更改标题颜色及大小。

CVcTitlevctitle;

CVcFontvcFont;

CVcColorvcColor;

vctitle = m_chart1.get_Title();

vcFont = vctitle.get_VtFont();

vcColor = vcFont.get_VtColor();

vcColor.Set(0,255,0);

vcFont.put_Size(12);

(3)坐标轴显示标签。

VARIANT var;

CVcPlotvcplot;

CVcAxisvcaxis;

CVcAxisTitlevcAxistitle;

vcplot = m_chart1.get_Plot();

vcaxis = vcplot.get_Axis(0,var);

vcAxistitle = vcaxis.get_AxisTitle();

vcAxistitle.put_Text(_T("时间 t(s)"));

函数get.Axis()中的0代表横轴,1代表左纵轴,2代表右纵轴。

(4)设置坐标轴最大及最小值。此例中在属性中进行设置,所以没有使用。

vcplot = m_chart1.get_Plot();

vcaxis = vcplot.get_Axis(1,var);

CVcValueScale vcvalue1 = vcaxis.get_ValueScale();

CVcCategoryScale vccat1 = vcaxis.get_CategoryScale();

vccat1.put_Auto(FALSE);

vcvalue1.put_MajorDivision(20);

vcvalue1.put_Maximum(2000);

vcvalue1.put_Minimum(0);

(5)输出点函数

CVcDataGridvcDataGrid = m_chart1.get_DataGrid();

vcDataGrid.SetData(i,1,i,0);

vcDataGrid.SetData(i,2,2*i,0);

其中SetData函数中,第一位为Row,其实也就是横轴位置,第二位为Column,也就是对应曲线,第三位为数值,第四位为0,具体含义未知。

此函数将输出点至于“确定”按钮对应函数中,所以需要双击确定按钮添加函数,如图17所示。

图17

删掉CDialogEx::OnOK();语句

添加如下语句:

for(int i=1; i<=1000; i++)

{

CVcDataGridvcDataGrid = m_chart1.get_DataGrid();

vcDataGrid.SetData(i,1,0.2*i,0);

vcDataGrid.SetData(i,2,0.1*i,0);

}

8:执行函数。

F5快捷键执行Debug,显示如图18所示,当点击确定按钮时,会进行计算并显示,如图19所示。

图18

图19

9:关于显示数据来说,其实每个点对应的是一个柱状图,所以将Row1设置为0,而Row101设置为0.1,在表格中0-0.1其实已经画了100个数据,不是单纯的对于x轴所标注的值进行绘图,所选取的变量其实是Row数,对于每个Row都有一个对应点数据值,所以此处标注值与Row有对应关系,但是二者一般情况下不同。

相关文档