在.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控件绘制曲线的更多相关文章

  1. 用Chart控件绘制动态图表

    进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量.ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用.本文仅以VC++为 ...

  2. c# 通过.net自带的chart控件绘制饼图pie chart

    c# 通过.net自带的chart控件绘制饼图pie chart   需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: > ...

  3. 使用.net 的Chart控件绘制曲线图

    在进行软件开发过程中我们可能会碰到需要生成图表的情况,在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你 ...

  4. C# WinForm开发系列之c# 通过.net自带的chart控件绘制饼图,柱形图和折线图的基础使用和扩展

    一.需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 1.设置chart1的属性Legends中默认的Legend1的Enable为false: ...

  5. C# Chart控件,chart、Series、ChartArea曲线图绘制的重要属性

    http://blog.sina.com.cn/s/blog_621e24e20101cp64.html 为避免耽误不喜欢这种曲线图效果的亲们的时间,先看一下小DEMO效果图: 先简单说一下,从图中可 ...

  6. Chart控件,chart、Series、ChartArea曲线图绘制的重要属性介绍

    先简单说一下,从图中可以看到一个chart可以绘制多个ChartArea,每个ChartArea都可以绘制多条Series.ChartArea就是就是绘图区域,可以有多个ChartArea叠加在一起, ...

  7. ZedGrap控件绘制图表曲线

    问题描述: 使用C#中ZedGrap控件绘制图表曲线图 ZedGrap 介绍说明:     安装ZedGrap控件 ZedGraph控件dll文件: 添加ZedGraph控件,首先在新建立的C#图像工 ...

  8. 使用Chart控件进行实时监控

    Chart作为微软提供绘制图表的控件,在刚开始使用时非常的迷茫,因为功能强大,涉及到的知识多, 一开始难以接收过来,但后天经过查找资料,耐心学习,终于还是有了一定的收获. Chart相当于一个大的图纸 ...

  9. winform Chart控件 获取鼠标处坐标值方法

    Chart控件本身功能强大,应用广泛,因此其属性.方法也很多.此处介绍在很多应用中需要查看鼠标位置处坐标值的一些方法 1,调用Chart事件  GetToolTip 利用ToolTipEventArg ...

随机推荐

  1. Create a method synchronized without using synchronized keyword

    Actually, lots of ways: No need for synchronization at all if you don't have mutable state. No need ...

  2. Opc

    http://www.tuicool.com/articles/nymUz2 http://blog.chinaunix.net/uid-20692368-id-3434001.html http:/ ...

  3. POJ3176Cow Bowling

    http://poj.org/problem?id=3176 题意:就是一个数塔的问题,属于最简单的动态规划题了吧,数塔从上到下只能找它下面的和它下面的右边的那一个想加,加到最后一行,看加哪个数可以保 ...

  4. hdu 4315 Climbing the Hill 博弈论

    题意:有n个人爬山,山顶坐标为0,其他人按升序给出,不同的坐标只能容纳一个人(山顶不限),Alice和Bob轮流选择一个人让他移动任意步,但不能越过前面的人,且不能和前面一个人在相同的位置.现在有一个 ...

  5. Error: The VPN client agent was unable to create the interprocess communication depot.

    当安装Cisco AnyConnect VPN Client出现The VPN client agent was unable to create the interprocess communica ...

  6. lintcode:落单的数

    题目: 落单的数 给出2*n + 1 个的数字,除其中一个数字之外其他每个数字均出现两次,找到这个数字. 样例 给出 [1,2,2,1,3,4,3],返回 4 挑战 一次遍历,常数级的额外空间复杂度 ...

  7. Java学习笔记之:java运算符

    一.介绍 计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算 ...

  8. seafile安装日志(非教程)

    需要的软件: python 2.7.x(从 Seafile 5.1 开始,python 版本最低要求为2.7) python-setuptools python-imaging python-mysq ...

  9. C# Java间进行RSA加密解密交互(二)

    原文:C# Java间进行RSA加密解密交互(二) 接着前面一篇文章C# Java间进行RSA加密解密交互,继续探讨这个问题. 在前面,虽然已经实现了C# Java间进行RSA加密解密交互,但是还是与 ...

  10. 代码自动生成工具_java版

    项目结构: 这里要实现的功能是,当我们给出了bean,如:Admin,User,People等实体类后, 我想用代码自动生成我想要的代码,最后生成的效果: 也就是说为每一个bean都生成相应的Dao, ...