C# chart控件绘制曲线

  1. 云栖社区>
  2. 博客>
  3. 正文

C# chart控件绘制曲线

橘子红了呐 2017-11-07 02:11:00 浏览798 评论0

摘要: 在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图、柱状图什么的了。   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 2...


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

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
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控件绘制曲线图

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。




    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5862529.html,如需转载请自行联系原作者



【云栖快讯】一站式开发者服务,海量学习资源免费学  详情请点击

网友评论