你的位置:首页 > ASP.net教程

[ASP.net教程]使用.net 的Chart控件绘制曲线图


在进行软件开发过程中我们可能会碰到需要生成图表的情况,在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图、柱状图什么的了。废话不多说,直接附上代码,实现绘制曲线图,并能进行视图缩放,注释很多,相信一看就明白。

 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Windows.Forms; 6 using System.Windows.Forms.DataVisualization.Charting; 7 using System.Drawing; 8  9 namespace DrawGraph 10 { 11   /// <summary> 12   /// 绘制曲线类 13   /// </summary> 14   public static class DrawClass 15   { 16     #region 绘制曲线函数 17     /// <summary> 18     /// 绘制曲线函数 19     /// </summary> 20     /// <param name="listX">X值集合</param> 21     /// <param name="listY">Y值集合</param> 22     /// <param name="chart">Chart控件</param> 23     public static void DrawSpline(List<int> listX, List<double> listY, Chart chart) 24     { 25       try 26       { 27         //X、Y值成员 28         chart.Series[0].Points.DataBindXY(listX, listY); 29         chart.Series[0].Points.DataBindY(listY); 30  31         //点颜色 32         chart.Series[0].MarkerColor = Color.Green; 33         //图表类型 设置为样条图曲线 34         chart.Series[0].ChartType = SeriesChartType.Spline; 35         //设置点的大小 36         chart.Series[0].MarkerSize = 5; 37         //设置曲线的颜色 38         chart.Series[0].Color = Color.Orange; 39         //设置曲线宽度 40         chart.Series[0].BorderWidth = 2; 41         //chart.Series[0].CustomProperties = "PointWidth=4"; 42         //设置是否显示坐标标注 43         chart.Series[0].IsValueShownAsLabel = false; 44  45         //设置游标 46         chart.ChartAreas[0].CursorX.IsUserEnabled = true; 47         chart.ChartAreas[0].CursorX.AutoScroll = true; 48         chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true; 49         //设置X轴是否可以缩放 50         chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true; 51         //将滚动条放到图表外 52         chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false; 53         // 设置滚动条的大小 54         chart.ChartAreas[0].AxisX.ScrollBar.Size = 15; 55         // 设置滚动条的按钮的风格,下面代码是将所有滚动条上的按钮都显示出来 56         chart.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All; 57         chart.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.SkyBlue; 58         // 设置自动放大与缩小的最小量 59         chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = double.NaN; 60         chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSize = 1; 61         //设置刻度间隔 62         chart.ChartAreas[0].AxisX.Interval = 10; 63         //将X轴上格网取消 64         chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false; 65         //X轴、Y轴标题 66         chart.ChartAreas[0].AxisX.Title = "环号"; 67         chart.ChartAreas[0].AxisY.Title = "直径"; 68         //设置Y轴范围 可以根据实际情况重新修改 69         double max = listY[0]; 70         double min = listY[0]; 71         foreach (var yValue in listY) 72         { 73           if (max < yValue) 74           { 75             max = yValue; 76           } 77           if (min > yValue) 78           { 79             min = yValue; 80           } 81         } 82         chart.ChartAreas[0].AxisY.Maximum = max; 83         chart.ChartAreas[0].AxisY.Minimum = min; 84         chart.ChartAreas[0].AxisY.Interval = (max - min) / 10; 85         //绑定数据源 86         chart.DataBind(); 87       } 88       catch (Exception exc) 89       { 90         MessageBox.Show(exc.ToString()); 91       } 92     }  93     #endregion 94  95     #region 鼠标点击,通过环号显示游标,并缩放到响应位置 96     /// <summary> 97     /// 鼠标点击,通过环号显示游标,并缩放到响应位置函数 98     /// </summary> 99     /// <param name="ringNum">环号</param>100     /// <param name="chart">Chart控件</param>101     public static void ShowCurByClick(int ringNum, Chart chart)102     {103       //设置游标位置104       chart.ChartAreas[0].CursorX.Position = ringNum;105       //设置视图缩放106       chart.ChartAreas[0].AxisX.ScaleView.Zoom(ringNum - 1, ringNum + 2);107       //改变曲线线宽108       chart.Series[0].BorderWidth = 3;109       //改变X轴刻度间隔110       chart.ChartAreas[0].AxisX.Interval = 1;111     } 112     #endregion113 114   }115 }