在进行软件开发过程中我们可能会碰到需要生成图表的情况,在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图、柱状图什么的了。废话不多说,直接附上代码,实现绘制曲线图,并能进行视图缩放,注释很多,相信一看就明白。
1usingSystem;2usingSystem.Collections.Generic;3usingSystem.Linq;4usingSystem.Text;5usingSystem.Windows.Forms;6usingSystem.Windows.Forms.DataVisualization.Charting;7usingSystem.Drawing;89namespaceDrawGraph10{11///<summary>12///绘制曲线类13///</summary>14publicstaticclassDrawClass15{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>23publicstaticvoidDrawSpline(List<int> listX, List<double>listY, Chart chart)24{25try26{27//X、Y值成员28chart.Series[0].Points.DataBindXY(listX, listY);29chart.Series[0].Points.DataBindY(listY);3031//点颜色32chart.Series[0].MarkerColor =Color.Green;33//图表类型 设置为样条图曲线34chart.Series[0].ChartType =SeriesChartType.Spline;35//设置点的大小36chart.Series[0].MarkerSize =5;37//设置曲线的颜色38chart.Series[0].Color =Color.Orange;39//设置曲线宽度40chart.Series[0].BorderWidth =2;41//chart.Series[0].CustomPRoperties = "PointWidth=4";42//设置是否显示坐标标注43chart.Series[0].IsValueShownAsLabel =false;4445//设置游标46chart.ChartAreas[0].CursorX.IsUserEnabled =true;47chart.ChartAreas[0].CursorX.AutoScroll =true;48chart.ChartAreas[0].CursorX.IsUserSelectionEnabled =true;49//设置X轴是否可以缩放50chart.ChartAreas[0].AxisX.ScaleView.Zoomable =true;51//将滚动条放到图表外52chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside =false;53//设置滚动条的大小54chart.ChartAreas[0].AxisX.ScrollBar.Size =15;55//设置滚动条的按钮的风格,下面代码是将所有滚动条上的按钮都显示出来56chart.ChartAreas[0].AxisX.ScrollBar.ButtonStyle =ScrollBarButtonStyles.All;57chart.ChartAreas[0].AxisX.ScrollBar.ButtonColor =Color.SkyBlue;58//设置自动放大与缩小的最小量59chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize =double.NaN;60chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSize =1;61//设置刻度间隔62chart.ChartAreas[0].AxisX.Interval =10;63//将X轴上格网取消64chart.ChartAreas[0].AxisX.MajorGrid.Enabled =false;65//X轴、Y轴标题66chart.ChartAreas[0].AxisX.Title ="环号";67chart.ChartAreas[0].AxisY.Title ="直径";68//设置Y轴范围 可以根据实际情况重新修改69doublemax = listY[0];70doublemin = listY[0];71foreach(varyValueinlistY)72{73if(max <yValue)74{75max =yValue;76}77if(min >yValue)78{79min =yValue;80}81}82chart.ChartAreas[0].AxisY.Maximum =max;83chart.ChartAreas[0].AxisY.Minimum =min;84chart.ChartAreas[0].AxisY.Interval = (max - min) /10;85//绑定数据源86chart.DataBind();87}88catch(Exception exc)89{90MessageBox.Show(exc.ToString());91}92}93#endregion9495#region鼠标点击,通过环号显示游标,并缩放到响应位置96///<summary>97///鼠标点击,通过环号显示游标,并缩放到响应位置函数98///</summary>99///<param name="ringNum">环号</param>100///<param name="chart">Chart控件</param>101publicstaticvoidShowCurByClick(intringNum, Chart chart)102{103//设置游标位置104chart.ChartAreas[0].CursorX.Position =ringNum;105//设置视图缩放106chart.ChartAreas[0].AxisX.ScaleView.Zoom(ringNum -1, ringNum +2);107//改变曲线线宽108chart.Series[0].BorderWidth =3;109//改变X轴刻度间隔110chart.ChartAreas[0].AxisX.Interval =1;111}112#endregion113114}115}