毕业设计需要设计可以实时显示数据曲线的上位机,于是学习了ZedGraph控件的使用,对用到的属性进行记录。
0、变量声明

ZedGraphControl zgc;
GraphPane panel = zgc.GraphPane;
PointPairList listAmp = new PointPairList();
LineItem cureAmp = panel.AddCurve("Amplitude", listAmp, Color.Red, SymbolType.Square);
  • 1
  • 2
  • 3
  • 4

1、设置字体样式时避免出现边框
会出现边框的写法:

FontSpec myFont = new FontSpec(“Arial”, 16, Color.Black, true, false, false);
panel.Title.FontSpec = myFont;
  • 1
  • 2

不会出现边框的写法:

panel.Title.FontSpec.Family = "Arial";
panel.Title.FontSpec.Size = 16;
panel.Title.FontSpec.IsBold = true;
  • 1
  • 2
  • 3

2、鼠标拖动曲线图
第一种是按住shift键后拖动

zgc.PanModifierKeys = Keys.Shift;
  • 1

第二种是直接鼠标拖动

zgc.PanModifierKeys = Keys.None;
  • 1

3、曲线图上下左右移动控制

zgc.IsEnableHPan = false; // 鼠标拖动时禁止横向移动
zgc.IsEnableVPan = false; // 鼠标拖动时禁止纵向移动
  • 1
  • 2

4、设置缩放比例与鼠标滚轮步骤大小关系

zedGraphControl1.ZoomStepFraction = 0; // 比例为0,即禁用鼠标滚轮的缩放功能
zedGraphControl1.ZoomStepFraction = 0.1; // 比例越大,缩放越灵敏
  • 1
  • 2

5、禁用右键菜单
右键菜单还挺好用的,我没有禁用过。

zgc.IsShowContextMenu = false;
  • 1

6、不显示上方x轴
其中MajorTic指大刻度,MinorTic指小刻度。

zgc.GraphPane.XAxis.MajorTic.IsOpposite = false;
zgc.GraphPane.XAxis.MinorTic.IsOpposite = false;
  • 1
  • 2

7、显示网格并设置网格线参数

zgc.GraphPane.XAxis.MajorGrid.IsVisible = true;    // 显示大刻度对应的网格
zgc.GraphPane.XAxis.MinorGrid.IsVisible = true;    // 显示小刻度对应的网格

panel.XAxis.MajorGrid.DashOn = 5f; // 网格为虚线,这句话是设置虚线中的实线部分长度
panel.XAxis.MajorGrid.DashOff = 2f; // 设置虚线中的空白部分长度
panel.XAxis.MajorGrid.PenWidth = 1.5f; // 设置虚线线宽

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

8、横纵轴缩放控制

zgc.IsEnableVZoom = false;  // 纵轴不缩放,默认为true,即可缩放
zgc.IsEnableHZoom = false; // 横轴不缩放
  • 1
  • 2

9、纵轴刻度的十次幂显示控制
当放大得很大时,纵轴刻度会用十次幂表示。但是我赋值false后仍然显示十次幂,这个我暂时没有找到原因。

zgc.GraphPane.YAxis.Scale.IsUseTenPower = false;    // 不用十次幂
  • 1

10、刻度线显示控制
以左边的纵坐标轴为例。画一根竖直的线,再画一根水平的线。outside指的是位于竖线左边的横线,inside指位于竖线右边的横线,但是crossinside和crossoutside是什么我还没想明白。我习惯把大刻度的crossinside和crossoutside都关了,把小刻度的outside和inside都关了。这样刻度线看起来比较清爽。

panel.YAxis.MajorTic.IsCrossInside = false;
panel.YAxis.MajorTic.IsCrossOutside = false;
panel.YAxis.MinorTic.IsInside = false;
panel.YAxis.MinorTic.IsOutside = false;
  • 1
  • 2
  • 3
  • 4

11、坐标轴起点
这个设置的作用就是当你放大坐标轴,比如x轴,最小的刻度是BaseTic,刻度左边是没有刻度值的了,并不是说这个刻度是图像的最左边。

panel.XAxis.Scale.BaseTic = 0;  // 横坐标轴的起点从零开始
  • 1

12、大小刻度步长设置
大刻度是100一个单位,小刻度是20一个单位,这样的话相邻两根大刻度线之间有4根小刻度线。

panel.XAxis.Scale.MinorStep = 20;
panel.XAxis.Scale.MajorStep = 100;
  • 1
  • 2

13、最大最小刻度设置
很多情况下并不知道最大刻度应该是多少。所以可以选择自动匹配。还有一个MaxGrace,不知道跟Max的区别是什么。

panel.YAxis.Scale.Max = 3100;
panel.YAxis.Scale.Min = 0;
panel.YAxis.Scale.MaxAuto = true; // 根据数据自动匹配纵坐标轴的最大值
  • 1
  • 2
  • 3

14、除数据区域外的图填充

panel.Fill = new Fill(Color.White, Color.LightGray, 45.0f); // 从左上角45.0°开始,从白色过渡到浅灰色
  • 1

15、鼠标移动到曲线上某个数据点时显示数据点的坐标

zgc.IsShowPointValues = true;
  • 1

16、鼠标移动到曲线上任何位置时显示该位置的坐标

zgc.IsShowCursorValues = true;
  • 1

17、显示滚动条
区域放大后可以用滚动条浏览其他区域的数据。但是滚动条只能拉动一次,拉一次后就消失了,暂时没有找到原因。

zgc.IsShowHScrollBar = true;
zgc.IsShowVScrollBar = true;
  • 1
  • 2

18、以鼠标所在位置为中心进行放大
默认是以图形中心进行放大。

zgc.IsZoomOnMouseCenter = true;
  • 1

19、修改曲线图例位置

panel.Legend.Position = ZedGraph.LegendPos.Top;
  • 1

20、修改曲线图例字体

panel.Legend.FontSpec.Family = "Arial";
panel.Legend.FontSpec.Size = 14;
  • 1
  • 2

21、修改曲线粗细

cureAmp.Line.Width = 1.5f;
  • 1

22、填充曲线数据点的图形

cureAmp.Symbol.Fill = new Fill(Color.Red);
  • 1

23、关联曲线到纵坐标轴
当两条曲线各自使用不同刻度的纵坐标轴时,需要把曲线跟相应的坐标轴关联起来。

cureAmp.IsY2Axis = true; // 关联cureAmp曲线到右边的纵坐标轴
  • 1

24、随机生成曲线点集

Random t = new Random();
for (int i = 0; i < 360; i += 10)
{double x = i;double y = t.NextDouble() * 1000;double y2 = t.NextDouble() * 80 + 5;listAmp.Add(x, y);listFreq.Add(x, y2);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

25、动态添加曲线点

zgcAmpFreq.AxisChange(); // 因为点增加,需要自动修改横轴最大值(前提是MaxAuto为true),所以需要更新坐标轴。
Refresh(); // 把变化后的点集显示在图里
  • 1
  • 2

小点
1、我在关闭某个通道后重新打开,发现原本是0-3000的纵坐标变成了2000-3000的纵坐标(我的测试数据是2300),也就是纵坐标的最小值变了。于是我把最小值设置成0(原本没有设置)、把纵坐标轴的MinAtuo和MaxAuto都关了。这样的话关闭后打开某个通道,该通道对应的坐标轴的范围不变。

不懂的点
1、不知道这个是干嘛的。运行后也没看出来是什么意思。YAxis和Y2Axis只能用AlignP,不能用AlignV或者AlignH。

panel.YAxis.Scale.Align = AlignP.Outside;
panel.Y2Axis.Scale.Align = AlignP.Outside;
  • 1
  • 2

2、测试时,这句话加上后(true和false)并没有产生什么改变。

panel.Legend.Border.IsVisible = false;
  • 1

Zedgraph 总结相关推荐

  1. ZedGraph在项目中的应用

    ZedGraph在项目中的应用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...

  2. ZedGraph:一个同时支持WinForm和WebForm的开源图表控件(基于LGPL协议,.NET 2.0 C#源代码)...

    今天弟弟说想要实现Cross Tab(交叉表)的显示和图表显示,交叉表方面的东西以前找过一些,我博客里也有些介绍(C#实现Pivot(Cross Table)的一段代码和例子):于是上网搜索一番,找到 ...

  3. ZedGraph在Asp.net中的应用

    由于项目的需求图表显示数据,今天在网上找了一天,终于找到一个不错的控件----ZedGraph,它支持asp,asp.net,vc. 现在最新的版本是5.0,些版本支持   .NET 2.0.5.0版 ...

  4. ZedGraph在Web中的使用

    上一篇SQL实现分组统计查询(按月.小时分组)中介绍了按月和小时为单位怎样实现分组查询,在本文中会实现将上文查询的结果以图表的形式显示在页面上.在页面上显示图标有很多种解决方案,office的owc组 ...

  5. ZedGraph给LineChart添加数值

    作为支持.net的强大的开源图表控件ZedGraph,最新版本是 New Update as of 28-Nov-2007 Version 5.1.4 + 4.6.4 官方主页:http://zedg ...

  6. Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线

    场景 首先要实现的效果如下 在实现上面的效果前参照下面的博客 DevExpress的TreeList怎样设置数据源使其显示成单列树形结构: https://blog.csdn.net/BADAO_LI ...

  7. Winform中设置ZedGraph在生成多条曲线时随机采用不同的颜色

    场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...

  8. Winform中设置ZedGraph的多条Y轴的标题和刻度不显示十次幂

    场景 Winform中设置ZedGraph的坐标轴的标题和刻度不显示十次幂: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106 ...

  9. Winform中设置ZedGraph鼠标悬浮显示线上的点的坐标并自定义显示的内容

    场景 Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...

  10. Winform中设置ZedGraph的坐标轴的标题和刻度不显示十次幂

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

最新文章

  1. RabbitMQ的应用场景以及基本原理介绍
  2. [译] ⚛ React 状态管理工具博物馆
  3. CTF——Web——MD5漏洞
  4. 【机器学习】决策树算法
  5. mysqldump: Got error: 1449
  6. opencv调取摄像头
  7. java 静态方法区别_Java 中 静态方法与非静态方法的区别
  8. nodejs实战案例(Express框架+mongoDB)——(15)——爬虫功能
  9. ollvm源码分析之控制流扁平化(3)
  10. mathtype服务器不显示,出现MathType字体无效的情况怎么办
  11. Laravel框架实现中英文双语站
  12. 用php表单写出梯形的面积,梯形面积
  13. 湖南信息学院大一C语言考试,2003级信息学院《C语言程序设计》考试试题
  14. 小程序弹框wx.showModal、wx.showActionSheet、wx.showToast
  15. Delphi7 To Delphi XE的变化
  16. uniapp页面通讯-uni.$emit、uni.$on、uni.$once、uni.$off
  17. 前端中的三维技术Cesium
  18. 流程定义语言(BPMN)
  19. 小猪佩奇python_小猪佩奇社会人专用服务器,有意思的python小程序,附python代码...
  20. 电脑报,百度网盘全新版本体验,风格大变样

热门文章

  1. 机器人操作系统 ROS 大全
  2. 经验分享——家长与学校应该怎样沟通
  3. SAP MM采购仓储入门视频教程——适合新手入门学习
  4. sql语句日期格式转换
  5. UTP网线和FTP网线,哪一种更适合超六类布线?
  6. set-cookie无法存入到浏览器cookie问题汇总
  7. NMAKE makefile内容和功能(1):描述块
  8. 点分十进制表示的字符串转换为 unsigned int 整型数值
  9. 把路由器改成无线网卡
  10. Eclipse 使用的注意 灵格斯 取词