在进行软件开发过程中我们可能会碰到需要生成图表的情况,在.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[].Points.DataBindXY(listX, listY);
chart.Series[].Points.DataBindY(listY); //点颜色
chart.Series[].MarkerColor = Color.Green;
//图表类型 设置为样条图曲线
chart.Series[].ChartType = SeriesChartType.Spline;
//设置点的大小
chart.Series[].MarkerSize = ;
//设置曲线的颜色
chart.Series[].Color = Color.Orange;
//设置曲线宽度
chart.Series[].BorderWidth = ;
//chart.Series[0].CustomProperties = "PointWidth=4";
//设置是否显示坐标标注
chart.Series[].IsValueShownAsLabel = false; //设置游标
chart.ChartAreas[].CursorX.IsUserEnabled = true;
chart.ChartAreas[].CursorX.AutoScroll = true;
chart.ChartAreas[].CursorX.IsUserSelectionEnabled = true;
//设置X轴是否可以缩放
chart.ChartAreas[].AxisX.ScaleView.Zoomable = true;
//将滚动条放到图表外
chart.ChartAreas[].AxisX.ScrollBar.IsPositionedInside = false;
// 设置滚动条的大小
chart.ChartAreas[].AxisX.ScrollBar.Size = ;
// 设置滚动条的按钮的风格,下面代码是将所有滚动条上的按钮都显示出来
chart.ChartAreas[].AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.All;
chart.ChartAreas[].AxisX.ScrollBar.ButtonColor = Color.SkyBlue;
// 设置自动放大与缩小的最小量
chart.ChartAreas[].AxisX.ScaleView.SmallScrollSize = double.NaN;
chart.ChartAreas[].AxisX.ScaleView.SmallScrollMinSize = ;
//设置刻度间隔
chart.ChartAreas[].AxisX.Interval = ;
//将X轴上格网取消
chart.ChartAreas[].AxisX.MajorGrid.Enabled = false;
//X轴、Y轴标题
chart.ChartAreas[].AxisX.Title = "环号";
chart.ChartAreas[].AxisY.Title = "直径";
//设置Y轴范围 可以根据实际情况重新修改
double max = listY[];
double min = listY[];
foreach (var yValue in listY)
{
if (max < yValue)
{
max = yValue;
}
if (min > yValue)
{
min = yValue;
}
}
chart.ChartAreas[].AxisY.Maximum = max;
chart.ChartAreas[].AxisY.Minimum = min;
chart.ChartAreas[].AxisY.Interval = (max - min) / ;
//绑定数据源
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[].CursorX.Position = ringNum;
//设置视图缩放
chart.ChartAreas[].AxisX.ScaleView.Zoom(ringNum - , ringNum + );
//改变曲线线宽
chart.Series[].BorderWidth = ;
//改变X轴刻度间隔
chart.ChartAreas[].AxisX.Interval = ;
}
#endregion }
}

最新文章

  1. mysqldump数据库同步遇到的问题
  2. C#中Invoke的用法()
  3. JavaScript中的property和attribute
  4. redhad借用CentOs yum 安装
  5. [Gauss]POJ1222 EXTENDED LIGHTS OUT
  6. 加载GIF动画方法 iOS
  7. 【Quick-COCOS2D-X 3.3 怎样绑定自己定义类至Lua之三】动手绑定自己定义类至Lua
  8. eclipse中启动项目报内存溢出问题通过修改配置解决
  9. lsof and dynamic array in bash/shell
  10. CRM BP SEARCH 优化
  11. IIS7上传文件大小設定
  12. unity 返回子对象组件
  13. HDU 2095 find your present (2) (异或)
  14. Java利用反射取得类的所有信息
  15. 在 .NET Core项目中使用UEditor图片、文件上传服务
  16. Linux 查看登录日志及登录失败用户的ip-lastb
  17. 关于Cocos2d-x的专属数据类型
  18. LeetCode——Best Time to Buy and Sell Stock IV
  19. B - Bridging signals (LIS)
  20. 51nod1222 最小公倍数计数 莫比乌斯反演 数学

热门文章

  1. JavaScript总结3—对象
  2. Spring 的@Controller 和@RestController的区别
  3. Java多线程中的join()方法
  4. js父窗口opener与parent
  5. 自动生存Makefile教程 autoscan aclocal autoconf autoheader automake configure
  6. Web前端开发:SQL Jsp小项目(二)------添加修改
  7. JAVA调用WebService总结
  8. C# ACM poj1007
  9. 牛客网算法题之All-in-All
  10. NOIP201501&amp;&amp;02