标题：MSChart控件
概述
MSChart控件，给图形统计和报表图形显示提供了很好的解决办法，同时支持Web和WinForm两种方式，包含英文版，中文版。MSChart控件与一个数据网格（DataGrid对象）关联，该数据网格存放了要显示的数据，数据网格也可以包含用于图表中标识系列或类别的标签。图表应用程序设计者在数据网格中插入数据或从报表或矩阵中输入数据。
属性
（1）ActiveSeriesCount属性数值型。根据DataGrid对象中的列数和绘制的图表类型返回图表中显示的系列数。
（2）AllowDynamicRotation属性返回或设置一个数值，它指示是否在：按下Ctrl键显示旋转光标之后就可交互式地旋转三维图表。属性值为逻辑型，缺省为.T.，可以使用光标交互式旋转图表。
（3）AllowSelections属性返回或设置一个数值，它指示是否可以选择图表对象。属性值为逻辑型，缺省为.T.，可以交互式地选择图表对象。
（4）AllowSeriesSelection属性返回或设置一个数值，它指出在单击单个的图表数据点时是否可选定整个系列。属性值为逻辑型，缺省为.T.，可以单击数据点选定整个系列。
（5）AutoIncrement属性返回或设置一个数值，它决定在输入数据期间，那些设置当前数据点的属性值是否能不用人工设置 Column和Row属性而自动递增。属性值为逻辑型，为.T.时， Data属性改变后，Row属性自动更新为列中的下一行。如果处于一列的末端，则Column属性递增到下一列。缺省为.F.。
（6）Backdrop属性返回对Backdrop对象的引用，它描述在图表或图表元素后面的阴影、图案或图片。
（7）Chart3d属性返回一个数值，此数值指定图表是否为三维图表。属性值为逻辑型，缺省为.F.，不是三维图表。
（8）ChartData属性返回或设置一个数组，该数组包含将要被该图表显示的值。注意：在Visual FoxPro中建立的数组该属性不能识别，该属性在Visual Basic中可用。
（9）ChartType属性 
返回或设置用于显示图表的图表类型。属性值为数值型，如表所示。
表 ChartType属性值
属性值说明0-3d Bar3D条形图1-2d Bar2D条形图2-3d Line3D折线图3-2d Line2D折线图4-3d Area3D面积图5-2d Area2D面积图6-3d Step3D阶梯图7-2d Step2D阶梯图8-3d Combination3D组合图9-2d Combination2D组合图14-2d Pie2D饼图16-2d XY2D XY散点图（10）Column属性数值型。返回或设置数据网格中当前的数据列。
（11）ColumnCount属性数值型。返回或设置与图表关联的当前数据网格中的列数。
（12）ColumnLabel 属性文本型。返回或设置与图表数据网格中的列关联的标签文本。
（13）ColumnLabelCount属性数值型。返回或设置与图表关联的数据网格中的列的标签级别数。
（14）ColumnLabelIndex属性数值型。返回或设置与图表关联的特定列标签的级别。
（15）Data属性数值型。返回或设置被插入图表数据网格中的当前数据点的数值，可以将此属性指向数据表的一个数值型字段。如：
Thisform.OLecontrol1.ColumnCount=2 &&图表控件包含两列
Thisform.Olecontrol1.Column=1 &&指向第1列
Thisform.Olecontrol1.Data=tblData.field1 &&设置数据为tblData表的field1字段
Thisform.Olecontrol1.Column=2 &&指向第2列
Thisform.Olecontrol1.Data=tblData.field2 &&设置数据为tblData表的field2字段
（16）DataGrid属性返回DataGrid对象的引用，它描述与图表关联的数据网格。
（17）DataSource属性返回或设置一个数据源，通过该数据源将该控件绑定到一个数据库。此属性的使用参考后面的“绑定ADO数据源”
（18）Footnote属性返回对Footnote对象的引用，它提供关于注释图表所用的描述性文字信息。
（19）FootnoteText属性文本型。返回或设置用作脚注的文本。
（20）Legend属性返回对Legend对象的引用，它包含有关小图标的外观及其描述图表系列的伴随文字的信息。
（21）Plot属性返回对Plot对象的引用，该对象描述图表的绘制区域。
（22）Repaint属性返回或设置值，该值决定图表被改变后是否重绘MSChart控件。属性值为逻辑型，缺省为.T.，刷新控件。
（23）Row属性数值型。返回或设置与图表关联的数据网格中当前列的指定行。
（24）RowCount属性数值型。返回或设置与图表关联的数据网格列的行数。
（25）RowLabelCount属性返回或设置与图表关联的数据网格行标签的级别数。
（26）RowLabelIndex属性数值型。返回或设置描述行标签级别的值。
（27）SeriesColumn属性数值型。返回或设置当前系列数据列位置。
（28）SeriesType属性数值型。返回或设置用于显示当前系列的类型，属性值参考表4-25。
（29）ShowLegend属性逻辑型。返回或设置一个决定图表的图例是否可见的值，缺省值为.F.。
（30）TextLengthType属性数值型。返回或设置一个值，该值指定文本的显示方式如何优化文本在屏幕或打印机上的输出效果。属性值如表4-26所示。
表4-26 TextLengthType属性值
属性值说明0-VtTextLengthTypeVirtual使用TrueType虚拟字体的尺寸来优化打印机上的文本输出效果。TrueType虚拟字体的尺寸对于显示在屏幕上的文本还不是十分精确。在屏幕上显示的文本的大小可能与该虚拟尺寸的大小不一样。在指定的位置可能会放不下比该尺寸大的文本，可能会出现半边字符，整个字符，甚至一个单词丢失的现象1-VtTextLengthTypeDevice选择该常量来为屏幕的文本输出效果进行优化。图表中的文本在屏幕上的位置将总是恰好位于该图表区。打印时文本一般会小一点，因此打印文本的位置与屏幕上的位置有时会有细微的差别（31）Title属性对Title对象的引用，该对象描述图表的标题文本。
（32）TitleText属性返回或设置作为图表标题而显示的文本。
Plot对象
Plot对象表示图表显示的区域。该对象允许编程以下对象：
（1）Axis对象 
代表图表的x 、y和z轴。z 轴仅在立体图表中是可见的。
（2）BackDrop对象 
轴后面的区域。
（3）Light对象 
图的环境和边缘光。
（4）LocationRect对象 
图的位置。
（5）SeriesCollection对象 
序列的集合。
（6）View3D对象 
立体图像的正视图和旋转图。
（7）Wall对象 
图后面的区域。
图表控件的方法
（1）EditCopy方法以Windows位图文件格式将当前图表的图片复制到剪贴板中。它同时将创建图表使用的数据复制到剪贴板中。
使用此方法，可将图表数据或图表图片本身粘贴到另一个应用程序中。因为数据和图表图片都存储在剪贴板上，因此粘贴到新的应用程序中的内容取决于该应用程序的类型。例如，如果在代码中执行图表的 EditCopy方法，然后切换到Excel工作表来选择“编辑”中的“粘贴”命令，则将把图表数据集复制到工作表中。如要将图表图片插入到工作表中，可在选定“编辑粘贴特殊”后选择“图片”类型。下列代码将当前的图表复制到Excel的表工作簿中。
Thisform.Olecontrol1.EditCopy && Olecontrol1为MSChart控件
oXLS=CREATEOBJECT("Excel.Application")
oXLS.Visible= .T.
oXLS.SheetsInNewWorkbook=1 &&建立一个空工作表
oXLS.Workbooks.Add &&添加一个表工作簿
oXLS.Worksheets("Sheet1").PasteSpecial &&选择性粘贴
由于在Excel中可以直接支持图形工作簿，所以可以使用下列代码直接粘贴到Excel图表中。
Thisform.Olecontrol1.EditCopy
oXLS=CREATEOBJECT("Excel.Application")
oXLS.Visible=.T.
oXlS.SheetsInNewWorkbook=1 &&建立一个空工作表
oXLS.Workbooks.Add(2) &&添加一个图形工作簿
oXLS.Charts("Chart1").Paste
（2）EditPaste方法将剪贴板中的Windows位图文件图形或由tab键分隔的文本粘贴到图表的当前选定区域。
图表可接受剪贴板中的几种类型的信息，这取决于调用EditPaste时选定的图表元素。如果选定了整个图表，则图表在剪贴板中寻找数据并试图使用这些新数据重新绘制图表。如果选定能够接受图片的项目，例如选定了条形图或图表背景，则图表在剪贴板上寻找图元文件。如果找到了图元文件，就使用该图元文件填充选定对象。
图表控件的事件
图表控件的事件非常多，但是大部分都是按照对图表进行编程设计的，于实际工作的需求并不相适应。在这里我们仅介绍PointSelected事件。
在单击数据点时发生PointSelected事件。所谓数据点，如图4-45中的每个柱形都是一个数据点。该事件可以接收4个参数值，如下所示：
PROCEDURE PointSelected
LPARAMETERS series, datapoint, mouseflags, cancel
ENDPROC
参数说明如表4-27所示。
表4-27 PointSelected事件参数说明
参数说明series数值型。标识包含该数据点的系列。根据数据网格中列的显示顺序给系列编号，编号从1开始。如在图4-45中一季度柱形的series值为1，依次类推，四季度柱形的series值为4，相对于数据库而言，该数值为表中字段的排列顺序dataPoint数值型。标识系列中的数据点。根据数据网格中行的显示顺序给数据点编号，编号从1开始。如在表4-45中所有2001年的dataPoint值为1，2002年的dataPoint值为2，相对于数据库而言，该数值为表中的记录号mouseFlags数值型。指示单击鼠标按钮时，是否有键处于按下状态。鼠标左键为1，右键为2cancel数值型。目前没有使用这个参数
图表控件安装部署
MSChart的安装微软发布的这款控件是需要单独安装的，而且只能用于.Net 3.5以上。VS2005、VS2008自身并没有带这款控件，包括VS2008的SP1补丁都没有，不过S2010已经自带了这款控件。另外需要注意VS2005是不能使用这款控件的。
下面下几个安装包：
1.MSChart控件
这个安装包是一定要安装的，安装后才能在系统中使用，不论你是开发还是部署。 如果你部署的系统在服务器上提示找不到Assembly，那请安装这个。
2.MSChart控件语言包
这个控件中有不少资源是需要中文化的，建议开发环境和线上环境都安装。
3.VS2008的插件
这个是用于VS2008的插件，安装后就能在VS2008中出现MSChart控件。
4.MSChart的开发文档
一份对控件中使用的类的详细说明文档
5.代码实例:Samples Environment for Microsoft Chart Controls
有两份,一份是给.Net 3.5的，一份是.Net 4.0的。
部署要求线上环境（生产环境）
请安装1，2即可。
开发环境
至少安装1，2，3。