当前位置: 代码迷 >> C# >> 使用.net 的Chart控件作图曲线图
  详细解决方案

使用.net 的Chart控件作图曲线图

热度:16   发布时间:2016-05-05 03:05:20.0
使用.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 }

 

  相关解决方案