Zedgraph 总结
毕业设计需要设计可以实时显示数据曲线的上位机,于是学习了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 总结相关推荐
- ZedGraph在项目中的应用
ZedGraph在项目中的应用<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" ...
- ZedGraph:一个同时支持WinForm和WebForm的开源图表控件(基于LGPL协议,.NET 2.0 C#源代码)...
今天弟弟说想要实现Cross Tab(交叉表)的显示和图表显示,交叉表方面的东西以前找过一些,我博客里也有些介绍(C#实现Pivot(Cross Table)的一段代码和例子):于是上网搜索一番,找到 ...
- ZedGraph在Asp.net中的应用
由于项目的需求图表显示数据,今天在网上找了一天,终于找到一个不错的控件----ZedGraph,它支持asp,asp.net,vc. 现在最新的版本是5.0,些版本支持 .NET 2.0.5.0版 ...
- ZedGraph在Web中的使用
上一篇SQL实现分组统计查询(按月.小时分组)中介绍了按月和小时为单位怎样实现分组查询,在本文中会实现将上文查询的结果以图表的形式显示在页面上.在页面上显示图标有很多种解决方案,office的owc组 ...
- ZedGraph给LineChart添加数值
作为支持.net的强大的开源图表控件ZedGraph,最新版本是 New Update as of 28-Nov-2007 Version 5.1.4 + 4.6.4 官方主页:http://zedg ...
- Winform中实现双击Dev的TreeList在ZedGraph中生成对应颜色的曲线
场景 首先要实现的效果如下 在实现上面的效果前参照下面的博客 DevExpress的TreeList怎样设置数据源使其显示成单列树形结构: https://blog.csdn.net/BADAO_LI ...
- Winform中设置ZedGraph在生成多条曲线时随机采用不同的颜色
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- Winform中设置ZedGraph的多条Y轴的标题和刻度不显示十次幂
场景 Winform中设置ZedGraph的坐标轴的标题和刻度不显示十次幂: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/106 ...
- Winform中设置ZedGraph鼠标悬浮显示线上的点的坐标并自定义显示的内容
场景 Winform中设置ZedGraph鼠标悬浮显示距离最近曲线上的点的坐标值和X轴与Y轴的标题: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article ...
- Winform中设置ZedGraph的坐标轴的标题和刻度不显示十次幂
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
最新文章
- RabbitMQ的应用场景以及基本原理介绍
- [译] ⚛ React 状态管理工具博物馆
- CTF——Web——MD5漏洞
- 【机器学习】决策树算法
- mysqldump: Got error: 1449
- opencv调取摄像头
- java 静态方法区别_Java 中 静态方法与非静态方法的区别
- nodejs实战案例(Express框架+mongoDB)——(15)——爬虫功能
- ollvm源码分析之控制流扁平化(3)
- mathtype服务器不显示,出现MathType字体无效的情况怎么办
- Laravel框架实现中英文双语站
- 用php表单写出梯形的面积,梯形面积
- 湖南信息学院大一C语言考试,2003级信息学院《C语言程序设计》考试试题
- 小程序弹框wx.showModal、wx.showActionSheet、wx.showToast
- Delphi7 To Delphi XE的变化
- uniapp页面通讯-uni.$emit、uni.$on、uni.$once、uni.$off
- 前端中的三维技术Cesium
- 流程定义语言(BPMN)
- 小猪佩奇python_小猪佩奇社会人专用服务器,有意思的python小程序,附python代码...
- 电脑报,百度网盘全新版本体验,风格大变样