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

时间:2022-06-09 16:45:57

Chart表格控件是 .netframework4.0之后才有的。所以在开发中请保持你使用的是4.0及以上版本。

要使用Chart 我们先来了解小Chart 的结构。如下图所示。

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