對C#Chart控件使用整理

前一篇博客 C#char控件的使用心得 簡述一個使用chart控件的例子此處詳細整理一下chart控件的使用。


要使用好Chart控件我們先得明確它的結構。如下圖所示:(只畫出了大概結構,更多的細節會使得圖片可視性差)


1. 一個chart可以包含多個chartArea。 chartArea是具體的座標區域。

2. 每一個chartArea主要包含X軸,Y軸,副X軸(上方),副Y軸(右方),綁定的線條,綁定的圖例。 

3. 線條可以有許多,只要將線條綁定到chartArea就可以在對應的chartArea顯示。

其樹形實體結構如下所示: 對於每個實體裏面的許多樣式屬性可以自行嘗試研究。


綜上可以對chart的結構有一個基本瞭解。接下來結合代碼進行說明

1. 線條的創建   此處用於創建4條線段。

           public Series maxTemp;
        public Series avgTemp;
        public Series minTemp;
        public Series vibration;
            maxTemp = new Series("maxTemp");
            avgTemp = new Series("avgTemp");
            minTemp = new Series("minTemp");
            vibration = new Series("vibration");
2.設置線條的樣式

//曲線的顏色
            maxTemp.BorderColor = Color.Black;
            maxTemp.Color = Color.Red;
            avgTemp.BorderColor = Color.Black;
            avgTemp.Color = Color.Green;
            minTemp.BorderColor = Color.Black;
            minTemp.Color = Color.Blue;
            vibration.BorderColor = Color.Black;
            vibration.Color = Color.Blue;
            //曲線的寬度
            maxTemp.BorderWidth = 2;
            avgTemp.BorderWidth = 2;
            avgTemp.BorderWidth = 2;
            vibration.BorderWidth = 2;
            //曲線的樣式   有圓形曲線,階梯形曲線,折線等等。
            maxTemp.ChartType = SeriesChartType.Spline;    
            avgTemp.ChartType = SeriesChartType.Spline;
            minTemp.ChartType = SeriesChartType.Spline;
            vibration.ChartType =SeriesChartType.Spline;
            //曲線的陰影樣式    可以讓曲線更加突出有立體感。
            maxTemp.ShadowOffset = 1;
            avgTemp.ShadowOffset = 1;
            minTemp.ShadowOffset = 1;
            vibration.ShadowOffset = 1;
            //標記的樣式        設置曲線中 每個數據點標記的樣式。可以在標記中顯示數據點的值,但是太多
//數據點的話將沒有可視性。
            maxTemp.MarkerColor = Color.White;
            maxTemp.MarkerStyle = MarkerStyle.Square;
            avgTemp.MarkerColor = Color.White;
            avgTemp.MarkerStyle = MarkerStyle.Square;
            minTemp.MarkerColor = Color.White;
            minTemp.MarkerStyle = MarkerStyle.Square;
            vibration.MarkerColor = Color.White;
            vibration.MarkerStyle = MarkerStyle.Square;
            //設置線條的軸類型   主要設置以下方做X軸還是上方做X軸,左方做Y軸還是右方做Y軸
            maxTemp.XAxisType = AxisType.Primary;
            maxTemp.YAxisType = AxisType.Primary;
            avgTemp.XAxisType = AxisType.Primary;
            avgTemp.YAxisType = AxisType.Primary;
            minTemp.XAxisType = AxisType.Primary;
            minTemp.YAxisType = AxisType.Primary;
            vibration.XAxisType = AxisType.Primary;
            vibration.YAxisType = AxisType.Primary;          
            vibration.IsValueShownAsLabel = true;    //此屬性將數據點的值作爲標籤。


2. ChartArea的創建和屬性設置

public ChartArea mainArea1 = new ChartArea("areaDTS");  
public ChartArea mainArea2 = new ChartArea("areaDOVS");


  //設置圖表區域 用戶可以拖動遊標   此處設置後用戶可以通過拖動遊標放大查看區域       
   //設置圖表區域 用戶可以拖動遊標
            mainArea1.CursorX.IsUserEnabled = true;
            mainArea1.CursorY.IsUserEnabled = true;
            mainArea2.CursorX.IsUserEnabled = true;
            mainArea2.CursorY.IsUserEnabled = true;
            //設置X Y 軸座標的標題。
            mainArea1.AxisX.Title = "光纖分區號/(標量)";
            mainArea1.AxisY.Title = "溫度值/(攝氏度)";
            mainArea2.AxisX.Title = "光纖震動位置/(m)";
            mainArea2.AxisY.Title = "震動值/(a.u.)";

      //設置網格。主網格 與主刻度對應 副網格與副刻度對應,從刻度向另一端畫一條線。如果線條中數據過多,
//產生較多的網格線會 使得整個區域過於密集,甚至爲全黑色。所以在數據點較多的情況小關閉副網格,甚至主網格。
            mainArea1.AxisX.MajorGrid.Enabled = false;
            mainArea1.AxisY.MajorGrid.Enabled = false;
            mainArea1.AxisX.MinorTickMark.Enabled = false;
         
            mainArea2.AxisX.MajorGrid.Enabled = false;
            mainArea2.AxisY.MajorGrid.Enabled = false;
            mainArea2.AxisX.MinorTickMark.Enabled = false;
  
            //設置曲線橫座標值類型爲時間類型
            vibration.XValueType = ChartValueType.DateTime;
            //將此線條綁定到的AxisX的標籤設置時間格式。

            mainArea1.AxisX.LabelStyle.Format = "MM-dd HH:mm";
     
            //設置主刻度線和副刻度線 一般只有主刻度線纔有對應標籤值。
            mainArea1.AxisX.MinorTickMark.Enabled = true ;
            mainArea1.AxisX.MajorTickMark.Enabled = true;





3. 創建圖例 標題

  Legend legend = new Legend();
 ElementPosition p = new ElementPosition(0, 0, 12, 10); 
  chart.Legends[0].Position = p;   //每創建一個對象都會存放在chart的集合屬性中可以通過數組的形式隨機訪問。


  Title title = new Title("chart使用方法");
  chart.Titles.Add(title);
4.將前面創建的對象加入到自己所屬的父實體中。
 chart2.ChartAreas.Add(mainArea1);  //將線條加入到chart的chartAreas集合屬性中
 chart2.ChartAreas.Add(mainArea2);
 series4.ChartArea = "areaDOVS";   //將線條綁定到對應ChartArea 通過chartArea的名字就可以綁定
 series3.ChartArea = "areaDTS";
 chart2.Series.Add(series3);       //將線條加入到chart的series集合屬性中。
 chart2.Series.Add(series4);

5.示例效果。注意示例效果與前述代碼無關,前述代碼只爲了說明。

上述代碼沒有講述給線條添加數據點,前一篇博客C#使用心得講述給線條添加數據點的方法。






發佈了43 篇原創文章 · 獲贊 26 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章