1、Chart Control 使用经验总结2009-03-28 13:44| Click to Rate近日开始学习和研究这个新奇的控件。一什么是图表上面这张表中所示的就是一张图表的所有组成。从中我们可以看出,图表的五大元素为:附注(Annotations)、图表区(ChartAreas)、图例(Legends)、列(Series)、标题(Titles)。二如何把 Chart控件添加到VS2008工具箱这三个文件可以从微软网站下载到或是在我的附件中下载。安装的顺序图中排列顺序,其中 MSChart.exe就是图表控件的安装程序; MSChartLP_chs.exe是语言包;MsChart_Vis
2、ualStudioAddon.exe是扩展安装。都安装完成后,打开 VS2008,在工具箱中任意处右击-选择项.,将下图中所示的两项打上勾,即可在工具箱中的Data栏中看到 Chart控件。我们可以把它移动到数据栏中,如下图所示:三创建一个最简单的图表在设计视图中从工具箱中拖拽 Chart控件至页面,如下图所示:如果在这个时候预览网页的话,是什么也看不见的,是一张图表,因为它没有数据,所以我们要给它赋值并设置相关属性。下同是整个Chart控件的页面代码,如何给它赋值大家可以研究一下这段代码。 LineAnnotation Name=LineAnnotation1/asp:LineAnnotat
3、ion/AnnotationsSeriesSeries Name=Series1pointsDataPoint YValues=40 /34673127874532/points/SeriesChartAreasChartArea Name=ChartArea1ChartArea/ChartAreasChart上面这段代码是直接在aspx文件中书写,下面要介绍的是在.vb文件中添加数据: Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 创建
4、列 Dim series As New Series(曲线) series.ChartType = SeriesChartType.Spline series.BorderWidth = 3 series.ShadowOffset = 2 给列赋值 series.Points.AddY(67) series.Points.AddY(30) series.Points.AddY(83) series.Points.AddY(23) series.Points.AddY(70) series.Points.AddY(60) series.Points.AddY(90) series.Points.
5、AddY(20) 将上述创建并赋过值的列添加到图表控件的Series集合中 Chart1.Series.Add(series) End Sub Page_Load四图表类型(ChartStyle)Chart控件提供了丰富的图表类型,如柱状、条状、由线、饼图、雷达图等等,并可以随时在2D和3D之间切换。下面所示的是部分图表类型的截图: (3D柱形图) (2D条形图) (2D线图) (3D饼图)图表类型的设置是是在Series集合中的,在代码中的写法如下:Chart1.Series(Series名).ChartType=.有了这么多的选择,就为我们不同的需求提供了大大的方便。五Chart 控件显示
6、数据库中的数据在讲绑定之前,先给大家看一张表,这张表介绍了在什么样的情况下用什么样的绑定方法,十分有用。下面就来分别介绍这张表中介绍到的种种绑定方法。在写示例之前我要说明一下我用到的两张表。MyTest表:SALESCOUNTS表:1.使用DataBindTable方法 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load绑定一个简单的数据源.X轴表示文字型,Y轴表示数字型 Using conect As New SqlConnection(Configurati
7、onManager.ConnectionStrings(NTTrafficConnectionString).ConnectionString) Dim Command As SqlCommand = New SqlCommand(SELECT name,score FROM MyTest, conect) conect.Open() Dim reader As SqlDataReader = Command.ExecuteReader(CommandBehavior.CloseConnection) Chart1.DataBindTable(reader, name reader.Close
8、() conect.Close() End Using End Sub结果:2.使用DataBind方法用databind方法 Dim MyCommand As SqlCommand = New SqlCommand( Chart1.DataSource = MyCommand Chart1.Series().XValueMember = ).YValueMembers = score).ChartType = SeriesChartType.Line).IsValueShownAsLabel = True Chart1.DataBind()效果:3.使用Points.DataBindX(Y)
9、方法SELECT score FROM MyTestChart1.DataBindTable(reader, ).Points.DataBindY(reader, 使用Points.DataBindXY方法).Points.DataBindXY(reader, , reader, ).ChartType = SeriesChartType.Pie4.使用Points.DataBind方法SELECT * FROM MyTest).Points.DataBind(reader, Name, Tooltip=myhref,label=score Chart1.ChartAreas().Area3D
10、Style.Enable3D = True5. 使用DataBindCrossTable方法 Chart1.DataBindCrossTable(reader, isclasslabel=scoreDataBindCrossTable(DataSource,SeriesGroup,xField,yFields,otherFields)下面一段为模仿原文写,不明白为何要用 marker Dim marker As MarkerStyle = MarkerStyle.Star4 For Each Ser As Series In Chart1.Series Ser.ChartType = Seri
11、esChartType.Line Ser.ShadowOffset = 2 Ser.BorderWidth = 3 Ser.MarkerSize = 12 Ser.MarkerStyle = marker Ser.MarkerBorderColor = Drawing.Color.Pink marker += 1 Next6. DataBindSeriesByRowsSELECT * FROM SALESCOUNTS Dim myDataAdapter As New SqlDataAdapter() myDataAdapter.SelectCommand = Command Dim myDat
12、eSet As New DataSet() myDataAdapter.Fill(myDateSet, Query Dim row As DataRow For Each row In myDateSet.Tables().Rows Dim seriesName As String = row(SalesRep).ToString() 显示在右上角的legend为此处的吧? Chart1.Series.Add(seriesName) Chart1.Series(seriesName).ChartType = SeriesChartType.Line Chart1.Series(seriesNa
13、me).BorderWidth = 2 Chart1.Series(seriesName).IsValueShownAsLabel = True Dim colIndex As Integer For colIndex = 1 To (myDateSet.Tables().Columns.Count) - 1 Dim columnName As String = myDateSet.Tables().Columns(colIndex).ColumnName 获得列名 Dim YVal As Integer = CInt(row(columnName) 获得列数据 Chart1.Series(s
14、eriesName).Points.AddXY(columnName, YVal) Next colIndex Next row Command.Connection.Close()7. DataBindThenAlignAxisLabel Dim yval1 As Double() = 2, 6, 5 Dim xval1 As String() = PeterAndrewJulie Dim yval2 As Double() = 4, 5, 3 Dim xval2 As String() = Dave Dim yval3 As Double() = 6, 5 Dim xval3 As Str
15、ing() = Mary).Points.DataBindXY(xval1, yval1)Series2).Points.DataBindXY(xval2, yval2)Series3).Points.DataBindXY(xval3, yval3) For Each ser As Series In Chart1.Series ser.Label = #AXISLABEL Align series using their X axis labels If AlignSeries.Checked Then Chart1.AlignDataPointsByAxisLabel() End If来自: 三:其它属性 相对来说,我觉得比较有用的属性有三个,分别是:Label、Tooltip以及Url链接。Label即标签的含义,可以在图片的关键位置进行一些关键数字或文字的描述,如下图:像上图:X轴和Y轴的文字便是标签,以及图表曲线中的红点上的文字,也是标签,添加了标签,可以让人更容易的对内容进行理解。 Tooltip即提示的含义,用于在各个关键点,如:标签、图形关键点、标题等当鼠标移动上去的时候,提示用户一些相关的详细或说明信息,例如上图,可以给曲线中的
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1