c# chart图表控件总结

一、什么是Micosoft.Chart.Controls
 Micosoft.Chart.Controls是微软自带的一个图形可视化的组件,可以在Web程序和窗体程序中(Windowsform)中使用。在.NET4.0之后(即VS2010之后)不需要再手动安装,集成在了VS里面,比如我用的VS2017版本,直接在工具箱中点开“ 数据 ”控件,里面就有一个Chart控件,直接拖动到窗体中即可,默认创建一个chart1的实例对象。

虽然现在流行很多的图形可视化控件库,要么缺少中文参考文档,要么是很古老的版本界面丑陋,要么是需要收费的控件,故而用来很不方便,使用微软自己的Chart依然可以实现很漂亮、很简单的图形可视化操作。

二、Chart控件五大核心“ 图表属性 ”——它们均是“ 集合 ”
之所以称之为“图表属性 ”是因为在属性中,这五大属性的分类是一样的,如下图所示:

它们均是集合属性。其中中间的三个属性ChartAreas、Series、Legends是最为核心的三个,画图的时候主要用到的也是这三个,下面就这5类属性,做一个简单的介绍。

1、ChartAreas属性
      ChartAreas可以理解为是一个图表的绘图区,例如,你想在一幅图上呈现两个不同属性的内容,一个是用户流量,另一个则是系统资源占用情况,那么你要在一个图形上绘制这两种情况,明显是不合理的,对于这种情况,可以建立两个ChartArea,一个用于呈现用户流量,另一个则用于呈现系统资源的占用情况。
      当然了,图表控件并不限制你添加多少个绘图区域,你可以根据你的需要进行添加。对于每一个绘图区域,你可以设置各自的属性,如:X,Y轴属性、背景等。需要注意的是,绘图区域只是一个可以作图的区域范围,它本身并不包含要作图形的各种属性数据。   

       ChartAreas属性的定义如下:

       public ChartAreaCollection ChartAreas { get; }   由此可见,他是一个返回ChartAreaCollection的只读属性。

(1)绘图区域的添加——三种方法

               在拖动一个Chart控件到窗体中去的时候,会默认有一个Name=“ChartArea1"的对象,它是ChartArea类的一个实例。

          a、直接通过操作属性:直接点击添加,会依次按照ChartArea2这样添加下去,也可以修改名字。

          b、chart1.ChartAreas.Add("ChartArea2");当然可以起一个其它的名字

          c、ChartArea area2=new ChartArea(“ChartArea2”);

               chart1.ChartAreas.Add(area2);

     第三种方法展现了创建绘图区域的本质,即添加一个ChartArea类型的对象到ChartAreas属性里面去。

 (2)绘图区对象的获取方法

每一个绘图区本质上都是ChartArea的一个实例对象,然后将该对象Add到了chart1对象的ChartAreas集合属性,故而有两种获取方法。

         a、通过绘图区名字获取:chart1.ChartAreas["ChartArea1"].属性或方法。

         b、通过下标索引获取:   chart1.ChartAreas[0].属性或方法。

  之所以有这两种方法,是因为ChartAreas属性的本质是集合。

 (3)绘图区域常见的一些属性

        下面的这些属性均是定义在 ChartArea 类型中的,故而是绘图区的属性     

        AlignmentOrientation:图表区对齐方向,定义两个绘图区域间的对齐方式,默认为Vertical。

        AlignmentStyle:图表区对齐类型,定义图表间用以对其的元素。

        AlignWithChartArea:参照对齐的绘图区名称。

        InnerPlotPosition:图表在绘图区内的位置属性。

        Position:绘图区位置属性,选项如同InnerPlotPosition。

        Name:绘图区名称。

   Axes:座标轴集合-非常重要的部分,可分别设置X轴(X axis),Y轴(Y axis),第二X轴(SecnondaryX axis)和第二Y轴(Secnondary Y axis),常用的属性包括:

               a.ArrowStyle设置座标轴是否有箭头

               b.Interval:轴刻度间隔大小

               c.IntervalOffset:轴刻度偏移量大小

               d.LableStyle 设置座标轴的文字大小等

               e.MajorGrid:主要辅助线

               f.MajorTickMark:主要刻度线

               g.MinorTickMark:次要刻度线

               h.MinorGrid:次要辅助线

               i.Title:座标轴标题

               j.TitleAlignment:座标轴标题对齐方式

注意:Axes属性又是一个“ 集合属性”,这也是为什么是Asex,而不是Axis,因为Asex是Axis的复数形式。Asex集合中放置的元素是Axis类型的实例,我们可以通过属性设计器去完成;默认情况下,每一个绘图区会有两组座标系,即X、Y、第二X、第二Y。要访问某一个

chart1.ChartAreas[1].Axes[3].属性或者是方法

这些属性或者是方法可以设置座标轴的显示样式,网格的显示方式等等,可以认为定制的。

2、Series属性
          Series:最重要的属性,图表集合,就是最终看到的饼图、柱状图、线图、点图等构成的合     

      Series,应该是整个绘图中最关键的内容了,通俗点说,即是实际的绘图数据区域,实际呈现的图形形状,简单点说,以折线图为例,每个Series就是一条线,每一条线都有自己的绘制形状、样式、独立的数据等。需要注意的是,每一个Series,你可以指定它的绘制区域(即把哪个Series画在哪个ChartArea),人情况下,如果不自己再添加绘图区域ChartArea,则所有的Series会画在同一个ChartArea。
       (1)Series的添加

        因为Series本身是一个集合属性,故而有两种方法添加

        第一、通过属性设置面板添加,默认情况下里面已经有了一个Series1存在了,它是 Series 类型的实例

        第二、通过代码添加。chart1.Series.Add("Series2");
        第三、直接创建一个Series对象,

                  Series series2 = new Series("Series2");
                  chart1.Series.Add(series2);

       (2)Series对象的属性和方法获取

     每一个Series本质上都是Series的一个实例对象,然后将该对象Add到了chart1对象的Series集合属性,故而有两种获取方法。

             a、通过绘图区名字获取:chart1.Series["Series1"].属性或方法。

             b、通过下标索引获取:   chart1.Series[0].属性或方法。

      之所以有这两种方法,是因为Series属性的本质是集合。

(3)图表Series一些常见的一些属性

         1.ChartArea:图表所属的绘图区域名称

         2.ChartType:图表类型(柱形、饼形、线形、点形、折线图等,有多达几十种之多)

         3.IsValueShownAsLabel:是否显示数据点标签,如果为true,在图表中显示每一个数据值

         4.Label:数据点标签文本

         5.LabelFormat:数据点标签文本格式

         6.LabelAngle:标签字体角度

         7.Legend:当前数据系列(图表)使用的图例名称

         8.Name:数据系列的名称

         9.Palette:数据系列(图表)外观定义

        10.Points:数据点集合,构成数据系列的点

        11.XValueMember:横座标绑定的数据源

        12.XValueType:横座标数字的类型,默认为auto,即根据传入的数据自动规定类型

        13.YValueMembers:纵座标绑定的数据源

        14.YValueType:纵座标数字的类型默认为auto,即根据传入的数据自动规定类型

        15.XAxisType:只是所要使用的座标轴是主座标还是副座标,它有两个取值,Primary和Sencondary

        16.YAxisType:

        17. 映射区(TooTip):鼠标放在数据点上出现的小提示,建议用代码控制;

  (4)Series属性的“ 数据绑定 ”方式。——上面的Points是“ 核心 ”

             (1)Points集合

         因为points是集合,故而具有集合的相关性质,Points是一个DataPointCollection类型的集合属性。可以查看           DataPointCollection的定义来查看相关的方法。

               要给每一个Series绑定数据,主要用到以下三个方法:

               public void DataBind(IEnumerable dataSource, string xField, string yFields, string otherFields);
 
               public void DataBindXY(IEnumerable xValue, params IEnumerable[] yValues);
 
               public void DataBindXY(IEnumerable xValue, string xField, IEnumerable yValue, string yFields);
 
               public void DataBindY(IEnumerable yValue, string yFields);
如下所示:
                       chart1.Series["Series1"].Points.DataBindXY(x, y);   即绑定了一组 X,Y到一个Series上面去了。

  3、Legends属性
MSChart的图例默认不显示,但可进行如下设置:

      1.Alignment:对齐方式

      2.AutoFitMinFontSize:当IsTextAutoFit为true时,显示的最小字体

      3.BackColor:背景颜色,当本身的绘图区域有背景时,将其设置为transparent效果更佳。

      4.enabled:是否显示图例

      5.IsTextAutoFit:文字大小根据图例区域的大小自动调整

      6.Position:图例出现的位置

4、另外两个集合属性
     Annotations注解集合
     Annotations是一个对图形的一些注解对象的集合,所谓注解对象,类似于对某个点的详细或者批注的说明,

     Titles标题合集
    根据字面含义即可以理解,是图表的标题配置,同样可以添加多个标题,以及设置标题的样式及文字、位置等属性。多看一下     它的属性即能明白各自的含义。

5    示意图

 

 

 

chart 内包括:

 

 

Axis Label

横纵座标的文字 (比如 0 20 40 ....)

Axis Title

横纵座标的代表什么(比如 Y Axis Title)

Chart Area

图标所在位置

Chart Picture

底色的背景图

Chart Series

chart的内的东西(比如 线或者柱形图等)

Legend

chart内seriess代表什么的标志符

Grid Lines

网格

Tick Marks

刻度

Plot Area

图区

Title

chart标题

Value Label

label的value

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章