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個屬性裡面的東西。