1. 程式人生 > >C#Chart 格控制元件的一些使用心得

C#Chart 格控制元件的一些使用心得

Chart表格控制元件是 .netframework4.0之後才有的。所以在開發中請保持你使用的是4.0及以上版本。

要使用Chart 我們先來了解小Chart 的結構。如下圖所示。

首先一個Chart控制元件裡面 可以有多個 ChartArea 每一個ChartArea 裡面可以有自己的橫軸和縱軸,可以有任意條線條。

1.ChartArea mainChart; 

首先宣告 ChartArea 變數。可以有多個變數。然後我們利用這個變數,來設定ChartArea 的一些樣式。

2.mainChart = new ChartArea("mainChart");

為變數賦處置,例項化一個名為mainChart的 ChartArea物件。當然例項化時有多個建構函式。可以呼叫其無參建構函式。名稱等屬性設不設定無所謂。如果要設定可以mainChar. 用點的方法看彈出的提示。就知道怎麼設定他的屬性了。

3.        設定mainChart裡面的樣式和要用的座標軸,座標軸的刻度。

            mainChart.CursorX.IsUserEnabled = true;               //設定座標軸可以用滑鼠點選放大,可以看到更小的刻度
           mainChart.CursorX.IsUserSelectionEnabled = true; //使用者可以選擇從那裡放大
            mainChart.AxisX.Title = "Time";                               //設定下方橫座標名稱,當然AxisX2為上方的橫座標。
            mainChart.AxisY.Title = "TEMPERATURE";            //設定左邊縱座標的名稱
            mainChart.AxisY2.Title = "AMPERES";                  //設定chartArea 右邊縱座標的名稱
  
            mainChart.AxisX.Interval = 1;                       //設定橫座標間隔為1,使得每個刻度間均勻分開的。
            mainChart.AxisX.IsStartedFromZero = true;  //設定橫座標從0開始

            mainChart.AxisX2.Interval = 1;                     //設定上方的橫座標
            mainChart.AxisX2.IsStartedFromZero = true;
            mainChart.AxisX2.Minimum = 0;                //設定橫座標的最小刻度為0

            mainChart.AxisY2.Minimum = 700.00;        //設定縱座標的最小起點
            mainChart.AxisY.Minimum = 50.00;            //同理
            mainChart.AxisY.IsStartedFromZero = false;
            mainChart.AxisY2.IsStartedFromZero = false;
            mainChart.AxisX.LineWidth = 2;               //設定橫座標線條的寬度。這裡設定為2 可以讓座標軸更加突出點。


            mainChart.AxisX.MajorGrid.Interval = 1;     

 //設定圖表網格。每一個x軸座標都會往上畫一條豎線,直到圖表上方。x軸還會有副刻度,副刻度也可以畫網格線。但是如果刻度密集了。表格區域就會一片黑色。所有有時候不要啟用副網格。 同理y軸也會有網格左Y軸,右y軸都畫網格的話圖表區域沒法看。自己看情況關閉一些網格。
            mainChart.AxisX2.MajorGrid.Enabled = false;            /關閉上方x軸刻度的網格。

            mainChart.AxisY.MajorGrid.Enabled = true;
            mainChart.AxisY2.MajorGrid.Enabled = false;        //關閉右邊y軸的主刻度網格。
        
            mainChart.AxisY.MinorTickMark.Enabled = true;    //使用y軸的副刻度
            mainChart.AxisY2.MinorTickMark.Enabled = true;  //使用右邊y軸的副刻度

 在這裡我並沒有設定刻度。如果不設定x軸和y軸刻度,預設情況是刻度會根據你的資料自適應的調整。如果你硬要設也可以,但建議自適應。

              圖表區域設定好了,接下來就可以設定線條了。

        public Series series1;       //電流曲線
        public Series series2;       //溫度曲線
        series1 = new Series("load");
        series2 = new Series("temperature");

      同理。例項化了2條線。 下面設定曲線的樣式。 StepLine是階梯型的。 spline是圓滑的曲線。具體的通過點VS會把樣式全彈出來給你選擇。

      series1.ChartType = SeriesChartType.StepLine;
     series2.ChartType = SeriesChartType.Spline;

  series1.BorderColor = Color.Black;
            series1.Color = Color.Black;

   設定去線的顏色。  這裡設定為一條藍色的線。
            series2.BorderColor = Color.Blue;
            series2.Color = Color.Blue;

   設定曲線的寬度。設定的數值越大線條越粗。

    series1.BorderWidth = 2;

   設定線條的陰影。設定了陰影后線條看起來更有立體感。

    series1.ShadowOffset = 1;

   設定曲線的標記。每個曲線到達的資料點都會有一個標記,這裡設定標記為圓形黑色。

   series2.MarkerColor = Color.Black;
            series1.MarkerStyle = MarkerStyle.Circle;

    /設定線條的軸型別每一條曲線都要繫結一個x軸和一個Y軸。
            series1.YAxisType = AxisType.Secondary;   //繫結第二條y軸,就是右邊的y軸
            series2.YAxisType = AxisType.Primary;     //第二條線繫結左邊的y軸。

   /  /設定線條的資料型別。可以不用設定,預設會自適應。C#會進行型別推斷。
            series1.YValueType = ChartValueType.Double;

     這些設定完成後,有圖表區域,有座標,有線條。只要給線條新增資料點了。

填加資料點有很多方式。可以通過繫結dataset。新增datapoint 等。這裡我們用程式碼用函式Series.Points.AddValueXY(object,string)手動迴圈新增。

             while ((src=sr.ReadLine()) != "")
                    {         
                        string[] data = src.Split(' ');
                        Double load = Convert.ToDouble(data[2]);
                        Double temperature = Convert.ToDouble(data[3]);
                       // double temperatureTcc = Convert.ToDouble(data[4]);
                        String time = data[0];

                        p2 = new DataPoint();
  
                        point1[i].SetValueXY(time, load);
                        point1[i].ToolTip = "Current: LOAD=" + load;

                        p2.SetValueXY(time, temperature);
                        p2.ToolTip = "Temperature: TCS=" + temperature;

                        series1.Points.Add(point1[i]);
                        series2.Points.Add(p2);
                        //series3.Points.Add(p3);
                        i++;
                    }

          線上條有了資料後,自動就會顯示在圖表上了。以上就可以幫你顯示很漂亮的線條了,就像圖片展示的那樣。chart控制元件裡面的屬性樣式太多。如果還想要設定更多的細節。可以自己參照chart控制元件的屬性。最主要的是看 Title ,Legend, Series ,ChartArea 這4個屬性裡面的東西。