首页 > 代码库 > C# chart控件绘制曲线

C# chart控件绘制曲线

 

在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图、柱状图什么的了。

 

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Windows.Forms;using System.Windows.Forms.DataVisualization.Charting;using System.Drawing; namespace DrawGraph{  /// <summary>  /// 绘制曲线类  /// </summary>  public static class DrawClass  {    #region 绘制曲线函数    /// <summary>    /// 绘制曲线函数       /// </summary>         /// <param name="listX">X值集合</param>         /// <param name="listY">Y值集合</param>         /// <param name="chart">Chart控件</param>         public static void DrawSpline(List<int> listX, List<double> listY, Chart chart)         {             try             {                 //X、Y值成员                 chart.Series[0].Points.DataBindXY(listX, listY);                 chart.Series[0].Points.DataBindY(listY);                 //点颜色                 chart.Series[0].MarkerColor = Color.Green;                 //图表类型  设置为样条图曲线                 chart.Series[0].ChartType = SeriesChartType.Spline;                 //设置点的大小                 chart.Series[0].MarkerSize = 5;                 //设置曲线的颜色                 chart.Series[0].Color = Color.Orange;                 //设置曲线宽度                 chart.Series[0].BorderWidth = 2;                 //chart.Series[0].CustomProperties = "PointWidth=4";                 //设置是否显示坐标标注                 chart.Series[0].IsValueShownAsLabel = false;                 //设置游标                 chart.ChartAreas[0].CursorX.IsUserEnabled = true;                 chart.ChartAreas[0].CursorX.AutoScroll = true;                 chart.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;                 //设置X轴是否可以缩放                 chart.ChartAreas[0].AxisX.ScaleView.Zoomable = true;                 //将滚动条放到图表外                 chart.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = false;                 // 设置滚动条的大小                 chart.ChartAreas[0].AxisX.ScrollBar.Size = 15;                 // 设置滚动条的按钮的风格,下面代码是将所有滚动条上的按钮都显示出来                 chart.ChartAreas[0].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All;                 chart.ChartAreas[0].AxisX.ScrollBar.ButtonColor = Color.SkyBlue;                 // 设置自动放大与缩小的最小量                 chart.ChartAreas[0].AxisX.ScaleView.SmallScrollSize = double.NaN;                 chart.ChartAreas[0].AxisX.ScaleView.SmallScrollMinSize = 1;                 //设置刻度间隔                 chart.ChartAreas[0].AxisX.Interval = 10;                 //将X轴上格网取消                 chart.ChartAreas[0].AxisX.MajorGrid.Enabled = false;                 //X轴、Y轴标题                 chart.ChartAreas[0].AxisX.Title = "环号";                 chart.ChartAreas[0].AxisY.Title = "直径";                 //设置Y轴范围  可以根据实际情况重新修改                 double max = listY[0];                 double min = listY[0];                 foreach (var yValue in listY)                 {                     if (max < yValue)                     {                         max = yValue;                     }                     if (min > yValue)                     {                         min = yValue;                     }                 }                 chart.ChartAreas[0].AxisY.Maximum = max;                 chart.ChartAreas[0].AxisY.Minimum = min;                 chart.ChartAreas[0].AxisY.Interval = (max - min) / 10;                 //绑定数据源                 chart.DataBind();             }             catch (Exception exc)             {                 MessageBox.Show(exc.ToString());             }         }          #endregion         #region 鼠标点击,通过环号显示游标,并缩放到响应位置         /// <summary>         /// 鼠标点击,通过环号显示游标,并缩放到响应位置函数         /// </summary>         /// <param name="ringNum">环号</param>         /// <param name="chart">Chart控件</param>         public static void ShowCurByClick(int ringNum, Chart chart)         {             //设置游标位置             chart.ChartAreas[0].CursorX.Position = ringNum;             //设置视图缩放             chart.ChartAreas[0].AxisX.ScaleView.Zoom(ringNum - 1, ringNum + 2);             //改变曲线线宽             chart.Series[0].BorderWidth = 3;             //改变X轴刻度间隔             chart.ChartAreas[0].AxisX.Interval = 1;         }          #endregion    }}

 

参考文章
1. 使用.net的Chart控件绘制曲线图

 

C# chart控件绘制曲线