1、一、先看个小例子Private Sub Form_Load()Dim MyData(20, 1) As Double-x 轴坐标值-Y 轴坐标值 -MyData(0, 0) = 0: MyData(0, 1) = 180 本句代表了:第一点数据的 X 轴坐标为 0,Y 轴坐标为 180MyData(1, 0) = 6: MyData(1, 1) = 60MyData(2, 0) = 8: MyData(2, 1) = 60MyData(3, 0) = 11: MyData(3, 1) = 0MyData(4, 0) = 16: MyData(4, 1) = 0MyData(5, 0) = 19
2、: MyData(5, 1) = 60MyData(6, 0) = 25.8: MyData(6, 1) = 60MyData(7, 0) = 28.8: MyData(7, 1) = 0MyData(8, 0) = 31.8: MyData(8, 1) = 60MyData(9, 0) = 40.3: MyData(9, 1) = 60MyData(10, 0) = 43.3: MyData(10, 1) = 0MyData(11, 0) = 93.3: MyData(11, 1) = 0MyData(12, 0) = 96.3: MyData(12, 1) = 60MyData(13, 0
3、) = 99.3: MyData(13, 1) = 0MyData(14, 0) = 105.3: MyData(14, 1) = 0MyData(15, 0) = 135.3: MyData(15, 1) = 0MyData(16, 0) = 144.3: MyData(16, 1) = 180MyData(17, 0) = 148.8: MyData(17, 1) = 270MyData(18, 0) = 405.03: MyData(18, 1) = 270MyData(19, 0) = 409.53: MyData(19, 1) = 180MyData(20, 0) = 564.17:
4、 MyData(20, 1) = 180波形图外观设置With MSChart1.TitleText = “速度 m/min“ 设置图线的外观.Plot.SeriesCollection(1).Pen.Width = 30.Plot.SeriesCollection(1).Pen.Style = VtPenStyleSolid 设置 XY 轴.Plot.Axis(VtChAxisIdX).ValueScale.Auto = False.Plot.Axis(VtChAxisIdY).ValueScale.Auto = False/ 设置最大值.Plot.Axis(VtChAxisIdX).Val
5、ueScale.Maximum = 600 设置横轴标注最大值.Plot.Axis(VtChAxisIdY).ValueScale.Maximum = 300 设置纵轴标注最大值/ 设置最小值.Plot.Axis(VtChAxisIdY).ValueScale.Minimum = 0.Plot.Axis(VtChAxisIdX).ValueScale.Minimum = 0/.Plot.Axis(VtChAxisIdX).ValueScale.MajorDivision = 6 X 轴主要网格数量.Plot.Axis(VtChAxisIdY).ValueScale.MajorDivision
6、= 6 Y 轴主要网格数量.Plot.Axis(VtChAxisIdX).ValueScale.MinorDivision = 0 X 轴次要网格数量.Plot.Axis(VtChAxisIdY).ValueScale.MinorDivision = 0 Y 轴次要网格数量.Plot.Axis(VtChAxisIdX).AxisGrid.MajorPen.Style = VtPenStyleDotted.Plot.Axis(VtChAxisIdY).AxisGrid.MajorPen.Style = VtPenStyleDottedMSChart1.Plot.AutoLayout = Fals
7、eMSChart1.Plot.UniformAxis = FalseMSChart1.chartType = VtChChartType2dXY 设置图形为二维散点图MSChart1.ChartData = MyData 数据End WithEnd Sub二、mschart 控件属性介绍1RowCount 属性 设置作图数据的行数。2ColumnCount 属性 设置作图数据的列数。3TitleText 属性 设置图题。4RowLabelCount 属性 设置行标的个数。5RowLabel 属性 设置行标。6ColumnLabelCount 属性 设置列标的个数。7ColumnLabel 属性
8、 设置列标。8Row 属性 设置当前行。9Column 属性 设置当前列。10AutoIncrement 属性 如果数据是连续存放的,将 AutoIncrement 属性设为 True,可以 10 . 不用随时设置当前行和当前列,向图表控件提供数据时可以连续行。11ShowLagend 属性 设置为 True 时可以显示图例。图表控件的类型VtChChartType3dBar 0 3 维条形图VtChChartType2dBar 1 2 维条形图VtChChartType3dLine 2 3 维折线图VtChChartType2dLine 3 2 维折线图VtChChartType3dArea
9、 4 3 维域型图VtChChartType2dArea 5 2 维域型图VtChChartType3dStep 6 3 维阶梯图VtChChartType2dStep 7 2 维阶梯图VtChChartType3dCombination 8 3 维联合图VtChChartType2dCombination 9 2 维联合图VtChChartType2dPie 14 2 维饼形图VtChChartType2dXY 16 2 维坐标图4 图表控件的数据只有图表控件取得数据才有可能显示数据。图表控件的数据是存放在内置的数据网格内。图表控件数据网格取得数据的方法有:1使用 Data 属性图表数据可以
10、保存在图表控件的 Data 属性中。Data 属性只能存储数字型的数据,而不能保存文本。在对 Data 属性赋值前,必须先设置 RowCount 属性和 ColumnCount 属性来提供数据的行数和列数,系统根据行数和列数安排 Data 的大小。在向 Data 属性赋值时,还需要指明当前行和当前列。例如,MSChart1.Column = 5MSChart1.Data = XYZ是将 XYZ 赋予 Data 的第 3 行第 5 列。如果数据是连续存放的,并将 AutoIncrement 属性设为 True,可以不用随时设置当前行和当前列。例如,MSChart1.Data = X(1)MSCh
11、art1.Data = X(2)MSChart1.Data = X(3)2使用 ChartData 属性ChartData 属性既可以存放数字型数据,也可以存放文本型数据。例如,Dim vntX(1 To 4) As VariantvntX(1) = “产量”vntX(2) = 200vntX(3) = 300vntX(4) = 400MSChart1.ChartData = X“产量”将标示在所绘制图形的 X 轴上。3使用 SetData 方法格式是:MSChart1.DataGrid.SetData 行,列,数值, nullFlag“数值”为双精度。nullFlag 指明数据点是否为空。本
12、章所开发的绘制图表应用程序使用 SetData 方法向图表对象添加数据。4图题、行标和列标对图题、行标示和列标示的赋值分两种情况:(1)使用 Data 属性和 SetData 方法?图题的赋值使用 TitleText 属性。?行标示或列标示的赋值先设置当前行或当前列,然后使用 RowLabel 属性或 ColumnLabel属性。例如,MSChart1.Row = 1MSChart1.RowLabel = “A”(2)使用 ChartData 属性假定用图表控件表示一个 2 维数据,作图时使用 MSChart1.ChartData = vntX。现在我们看一看 vntX 是如何形成的。Dim
13、vntX(1 To 3, 1 To 4) As VariantvntX(1,1) = “产品质量逐年变化表 ” 图题放在 vnt(1,1)vntX(1,2) = ”1 级” 列标放在第 1 行vntX(1,3) = ”2 级”vntX(1,4) = ”3 级”vntX(2,1) = “1999 年” 行标放在第 1 列vntX(2,2) = 100 1 级品数量vntX(2,3) = 200 2 级品数量vntX(2,4) = 300 3 级品数量vntX(3,1) = “2000 年” 行标放在第 1 列vntX(3,2) = 300 1 级品数量vntX(3,3) = 200 2 级品数量
14、vntX(3,4) = 100三、MSChart 的元素组成最常用的属性包括ChartAreas :增加多个绘图区域,每个绘图区域包含独立的图表组、数据源,用于多个图表类型在一个绘图区不兼容时。AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式。AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。AlignWithChartArea:参照对齐的绘图区名称。InnerPlotPosition:图表在绘图区内的位置属性。Auto:是否自动对齐。Height:图表在绘图区内的高度(百分比,取值在 0-100)Width :图表在绘图区内的宽度(
15、百分比,取值在 0-100)X,Y:图表在绘图区内左上角坐标Position:绘图区位置属性,同 InnerPlotPosition。Name:绘图区名称。Axis:坐标轴集合Title:坐标轴标题TitleAlignment:坐标轴标题对齐方式Interval:轴刻度间隔大小IntervalOffset:轴刻度偏移量大小MinorGrid:次要辅助线MinorTickMark:次要刻度线MajorGrid:主要辅助线MajorTickMark:主要刻度线DataSourceID:MSChart 的数据源。Legends:图例说明。Palette :图表外观定义。Series:最重要的属性,图
16、表集合,就是最终看到的饼图、柱状图、线图、点图等构成的集合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。IsValueShownAsLabel:是否显示数据点标签,如果为 true,在图表中显示每一个数据值Label:数据点标签文本LabelFormat:数据点标签文本格式LabelAngle:标签字体角度Name:图表名称Points :数据点集合XValueType:横坐标轴类型YValueType:纵坐标轴类型XValueMember:横坐标绑定的数据源(如果数据源为 Table,则填写横坐标要显示的字段名称)YValueMembers:纵坐标绑定的数据源(如果数据源为 Table,则填写纵坐标要显示的字段名称,纵坐标可以有两个)ChartArea:图表所属的绘图区域名称ChartType:图表类型(柱形、饼形、线形、点形等)Legend:图表使用的图例名称Titles :标题集合。width:MSChart 的宽度。height :MSChart 的高度。常用事件:Series1.Points.DataBind()绑定数据点集合,如果要在一个 MSChart 控件的一个绘图区(ChartArea)内添加多个不同数据源的图表,就用这个主动绑定数据集合的方法。可以将表中指定字段的值绑定到指定的坐标轴上。MSChart1.DataBind()