使用.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         #endregion
113 
114     }
115 }

 

转载于:https://www.cnblogs.com/yunhanh/p/4730531.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值