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个属性里面的东西。