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

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