VB mschart控件的使用

图表控件的类型

VtChChartType3dBar 0 3维条形图

VtChChartType2dBar 1 2维条形图

VtChChartType3dLine 2 3维折线图

VtChChartType2dLine 3 2维折线图  -----一維數組一條折線,兩維數組兩條依次類推

VtChChartType3dArea 4 3维域型图

VtChChartType2dArea 5 2维域型图

VtChChartType3dStep 6 3维阶梯图

VtChChartType2dStep 7 2维阶梯图

VtChChartType3dCombination 8 3维联合图

VtChChartType2dCombination 9 2维联合图

VtChChartType2dPie 14 2维饼形图

VtChChartType2dXY 16 2维坐标图----------------------兩維數組第一個值為橫座標,第二個為縱座標,

三維則第三個為曲線2的縱座標

http://blog.csdn.net/asftrhgjhkjlkttttttt/article/details/5661557

一、先看个小例子

Private Sub Form_Load()
Dim MyData(20, 1) As Double
    '-----x轴坐标值-----Y轴坐标值----------

MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为18

MyData(1, 0) = 6: MyData(1, 1) = 60

MyData(2, 0) = 8: MyData(2, 1) = 60
    MyData(3, 0) = 11: MyData(3, 1) = 0
    MyData(4, 0) = 16: MyData(4, 1) = 0
    MyData(5, 0) = 19: MyData(5, 1) = 60
    MyData(6, 0) = 25.8: MyData(6, 1) = 60
    MyData(7, 0) = 28.8: MyData(7, 1) = 0
    MyData(8, 0) = 31.8: MyData(8, 1) = 60
    MyData(9, 0) = 40.3: MyData(9, 1) = 60
    MyData(10, 0) = 43.3: MyData(10, 1) = 0
    MyData(11, 0) = 93.3: MyData(11, 1) = 0
    MyData(12, 0) = 96.3: MyData(12, 1) = 60
    MyData(13, 0) = 99.3: MyData(13, 1) = 0
    MyData(14, 0) = 105.3: MyData(14, 1) = 0
    MyData(15, 0) = 135.3: MyData(15, 1) = 0
    MyData(16, 0) = 144.3: MyData(16, 1) = 180
    MyData(17, 0) = 148.8: MyData(17, 1) = 270
    MyData(18, 0) = 405.03: MyData(18, 1) = 270
    MyData(19, 0) = 409.53: MyData(19, 1) = 180
    MyData(20, 0) = 564.17: 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).ValueScale.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 '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 = VtPenStyleDotted
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False

    MSChart1.chartType = VtChChartType2dXY    '设置图形为二维散点图

MSChart1.ChartData = MyData '数据
End With

End Sub

二、mschart控件属性介绍

1.RowCount属性                             设置作图数据的行数。

2.ColumnCount属性                        设置作图数据的列数。

3.TitleText属性                                设置图题。

4.RowLabelCount属性                    设置行标的个数。

5.RowLabel属性                              设置行标。

6.ColumnLabelCount属性               设置列标的个数。

7.ColumnLabel属性                        设置列标。

8.Row属性                                      设置当前行。

9.Column属性                                 设置当前列。

10.AutoIncrement属性               如果数据是连续存放的,将AutoIncrement属性设为True,可以10 .                                              不用随时设置当前行和当前列,向图表控件提供数据时可以连续行。

11.ShowLagend属性                 设置为True时可以显示图例。

4 图表控件的数据

只有图表控件取得数据才有可能显示数据。图表控件的数据是存放在内置的数据网格内。图表控件数据网格取得数据的方法有:

1.使用Data属性

图表数据可以保存在图表控件的Data属性中。Data属性只能存储数字型的数据,而不能保存文本。在对Data属性赋值前,必须先设置RowCount属性和ColumnCount属性来提供数据的行数和列数,系统根据行数和列数安排Data的大小。

在向Data属性赋值时,还需要指明当前行和当前列。例如,

MSChart1.Column = 5

MSChart1.Data = XYZ

是将XYZ赋予Data的第3行第5列。

如果数据是连续存放的,并将AutoIncrement属性设为True,可以不用随时设置当前行和当前列。例如,

MSChart1.Data = X(1)

MSChart1.Data = X(2)

MSChart1.Data = X(3)

2.使用ChartData属性

ChartData属性既可以存放数字型数据,也可以存放文本型数据。例如,

Dim vntX(1 To 4) As Variant

vntX(1) = “产量”

vntX(2) = 200

vntX(3) = 300

vntX(4) = 400

MSChart1.ChartData = X

“产量”将标示在所绘制图形的X轴上。

3.使用SetData方法

格式是:

MSChart1.DataGrid.SetData 行,列,数值,nullFlag

“数值”为双精度。nullFlag指明数据点是否为空。

本章所开发的绘制图表应用程序使用SetData方法向图表对象添加数据。

4.图题、行标和列标

对图题、行标示和列标示的赋值分两种情况:

(1)使用Data属性和SetData方法

?图题的赋值使用TitleText属性。

?行标示或列标示的赋值先设置当前行或当前列,然后使用RowLabel属性或ColumnLabel属性。例如,

MSChart1.Row = 1

MSChart1.RowLabel = “A”

(2)使用ChartData属性

假定用图表控件表示一个2维数据,作图时使用MSChart1.ChartData = vntX。现在我们看一看vntX是如何形成的。

Dim vntX(1 To 3, 1 To 4) As Variant

vntX(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级品数量

vntX(3,4) = 100

 三、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的数据源。

  Legends:图例说明。

  Palette:图表外观定义。

  Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的集合;可以将多种相互兼容的类型放在一个绘图区域内,形成复合图。

  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()

2010年06月10日 星期二 15:46
实例
MSCHART的使用之vb中利用MSCHART控件画二维散点图
http://hi.baidu.com/privateblog/blog/item/c696d6f911968d5d242df23f.html

近日在学习傅立叶分解时,写了个小程序来验证自己对傅立叶分解的一些理解,为了更生动直观就需要画一些图形,以前总是用picture控件来实现,后来在网上看到VB中有个MSCHART控件可以来画很多类型的图形,就学习了一下,由于是第一次搞,所以按习惯在网上搜索相关帖子,发现没有一个很完整的关于MSCHART中二维散点图的例子,很是郁闷,经过我自己几天的努力,终于解决了这个问题.现以一个具体的例子来说明,希望我的这个例子能对大家有所帮助.这个例子是一个论坛上一位网友提出来的,但是这个问题一直到现在还没有人回答,我权当在这里回答一下吧.问题如下:

如何用VB画出我附件中的图,请各位知道的高手指点下,小弟感激不尽! 
最好能根据我给的数据写出具体的源代码,或者类似的也可以。再次感谢!

上面是这个帖子的原始图形

根据此我写了下面的代码

Private Sub Form_Load()

'对于二维散点图来说,第一列代表了X轴坐标,第二列代表了Y轴坐标
'因此在定义二维数据时,第二维定义为0到1,第一维代表了第几点数据,可根据数据点数变化
'下面以数据点数有21点为列子
Dim MyData(20, 1) As Double
    '-----x轴坐标值-----Y轴坐标值----------
    MyData(0, 0) = 0: MyData(0, 1) = 180 '本句代表了:第一点数据的X轴坐标为0,Y轴坐标为180
    MyData(1, 0) = 6: MyData(1, 1) = 60
    MyData(2, 0) = 8: MyData(2, 1) = 60
    MyData(3, 0) = 11: MyData(3, 1) = 0
    MyData(4, 0) = 16: MyData(4, 1) = 0
    MyData(5, 0) = 19: MyData(5, 1) = 60
    MyData(6, 0) = 25.8: MyData(6, 1) = 60
    MyData(7, 0) = 28.8: MyData(7, 1) = 0
    MyData(8, 0) = 31.8: MyData(8, 1) = 60
    MyData(9, 0) = 40.3: MyData(9, 1) = 60
    MyData(10, 0) = 43.3: MyData(10, 1) = 0
    MyData(11, 0) = 93.3: MyData(11, 1) = 0
    MyData(12, 0) = 96.3: MyData(12, 1) = 60
    MyData(13, 0) = 99.3: MyData(13, 1) = 0
    MyData(14, 0) = 105.3: MyData(14, 1) = 0
    MyData(15, 0) = 135.3: MyData(15, 1) = 0
    MyData(16, 0) = 144.3: MyData(16, 1) = 180
    MyData(17, 0) = 148.8: MyData(17, 1) = 270
    MyData(18, 0) = 405.03: MyData(18, 1) = 270
    MyData(19, 0) = 409.53: MyData(19, 1) = 180
    MyData(20, 0) = 564.17: 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).ValueScale.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 '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 = VtPenStyleDotted
    MSChart1.Plot.AutoLayout = False
    MSChart1.Plot.UniformAxis = False
    MSChart1.chartType = VtChChartType2dXY '设置图形为二维散点图
    MSChart1.ChartData = MyData '数据
End With
End Sub

运行后的效果图如下

MSCHART的二维散点图对于实际工作是有很大用途的,例如数据采集中,实现时间变量的曲线等等.希望这个例子对大家有帮助

VB mschart控件的使用相关推荐

  1. 解决 MSChart控件 X轴坐标显示不全的问题

    前一阵子做开发用到微软的MSChart控件,功能虽然强大,但是从来没用过,一直处在摸索之中,一个小问题花了半天时间去研究.终于把X轴坐标显示不全的问题给解决了,当然也在网上找了很多的资料才搞定的,今天 ...

  2. VB DATA控件链接SQL SERVER

    VB DATA控件链接SQL SERVER,Data控件在开发中已经很好使用了,我的一个同事在改一个VB程序,需要把ACCESS数据库升迁至SQL SERVER. 但那个VB程序代码每个部分都用DAT ...

  3. C# mschart 控件的基本使用和图表控件Series的概念

    使用sharpdevelop: 此工具默认没有mschart控件:把如下dll添加到引用: 工具箱里面把控件加出来:sharpdevelop加控件到工具箱见此: https://blog.csdn.n ...

  4. VB 设置控件边框颜色(如:List、Text、Picture)

    VB 设置控件边框颜色,比如:ListBox.TextBox.PictureBox.ComboBox等等-. 调用方法: 'setBorderColor (控件句柄,颜色值)  setBorderCo ...

  5. VB表格控件总览与例程分析

    一.表格控件总览: 在VB开发环境中,表格控件在界面开发元素中占有重要的地位.它不仅有外观整洁.表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信 ...

  6. 为系统加载右键注册控件选项【VB 注册控件】

    做VB的,经常注册和反注册OCX控件和DLL链 但是,每次都要 "开始"--"运行" --"regsvr32 C:\********\******.o ...

  7. VB让控件可以当标题栏拖动

    '运用本段代码可以使任意控件像窗体标题栏一样具有拖动窗体的功能? '先在模块中加入以下代码: Public Declare Function ReleaseCapture Lib "user ...

  8. 【引用】窗口处理技巧大全 vb(窗体控件)

    Vb提供了API函数SetWindowLong和GetWindowLong,可以让我们很容易取得对窗口的操作:通过对窗口属性的操作,可以更改窗口的显示风格.有些看来是正常情况下无法实现的窗口,现在你可 ...

  9. vb透明控件窗体不透明函数

    vb透明控件 Public Declare Function SetWindowRgn Lib "user32 " (ByVal hwnd As Long, ByVal hRgn ...

  10. C# mschart 控件 框选 删除部分数据 及游标CursorX CursorY 使用

    C# mschart 控件 框选 删除部分数据 实现功能 : 1.鼠标框选,选中chart控件中部分数据: 2.将选中的数据标红显示: 3.删除选中的红色数据: demo源码下载:https://gi ...

最新文章

  1. 第六课.Python函数(三)
  2. 旋转Apriltag角度检测
  3. MATLAB基础操作--命令窗口
  4. Sqli-labs less 62
  5. VS2015使用scanf报错解决方案
  6. linux 编译C语言代码后产生OBJ文件的方法
  7. Obtain a Permutation(思维)
  8. 重写setTimeout扩展参数
  9. 分布式事务解决方案——柔性事务与服务模式
  10. 使用Java查询DynamoDB项
  11. python 通过ip获取城市_python 根据ip获取地理位置
  12. 编写一个java打印心程序_java – ?同时打印心脏符号
  13. nodejs 最简单的文件接收
  14. 无线网络,把我整惨了。求助各位了。
  15. OpenCV 实现颜色直方图
  16. Mysql安装相关问题
  17. PCI Express 16X和PCIE 2.0有什么区别?哪个更好?
  18. hdu-5745 La Vie en rose bitset
  19. 找工作杂谈(一)2019年春招复习资料总结
  20. vue项目使用 Recorder.js 实现录音功能

热门文章

  1. VC++2010下载教程
  2. chinapub matlab,MATLAB 2020从入门到精通
  3. 教育网系统服务器域名地址,中国教育网DNS IP地址大全(32个省)
  4. wp10 手机 部署linux,【图片】02-15【吐槽】【转】win10手机端直接安装xap教程!【windowsphone吧】_百度贴吧...
  5. WindowBuilder的安装
  6. Delphi7 SqlServer实现数据的CRUD(一)
  7. python小程序 --指法练习
  8. 闪光css,css实现图片闪光效果
  9. 2009年南京生活小结
  10. 操作系统期末复习【超实用】