Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
场景
Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716
Winform中实现ZedGraph中曲线右键显示为中文:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292
在上面两篇文章的基础上,已经实现的ZedGraph的右键效果
现在需要根据当前图形的Y轴的选项自动追加右键菜单,打开设置Y轴上下限的输入面板,进而设置Y轴的上下限。
比如当曲线图有两个Y轴,那么在右键时就会显示两个设置上下限的菜单。
点击相应的右键菜单时弹出设置上下限的窗口
将上限设置为150之后
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
在初始化ZedGraph的图形方法中绑定其右键菜单事件
zgc.ContextMenuBuilder -= zgc_ContextMenuBuilder; //上下文菜单生成事件订阅
zgc.ContextMenuBuilder += zgc_ContextMenuBuilder; //上下文菜单生成事件订阅
然后在右键菜单事件中
private static void zgc_ContextMenuBuilder(ZedGraphControl control, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState)
{
#region 扩展上下文菜单 #region 设置上下限菜单 ToolStripMenuItem mnuYAxisUpLower = null;
for (int i = ; i < control.GraphPane.YAxisList.Count; i++)
{
YAxis yAxis = control.GraphPane.YAxisList[i];
mnuYAxisUpLower = new ToolStripMenuItem();
mnuYAxisUpLower.Name = "mnuYAxisUpLower" + i;
mnuYAxisUpLower.Text = String.Format("设置[{0}]上下限", yAxis.Title.Text);
mnuYAxisUpLower.Click += delegate(object sender, EventArgs e)
{
Dialog.FrmSetScaleMaxMin frmSetScaleMaxMin = new FrmSetScaleMaxMin(mnuYAxisUpLower.Text, yAxis.Scale.Max, yAxis.Scale.Min);
DialogResult result = frmSetScaleMaxMin.ShowDialog();
if (result == DialogResult.OK)
{
yAxis.Scale.Max = frmSetScaleMaxMin.Max;
yAxis.Scale.Min = frmSetScaleMaxMin.Min;
//更改上下限后刷新曲线图
control.AxisChange();
control.Refresh();
control.Invalidate();
}
};
menuStrip.Items.Add(mnuYAxisUpLower);
}
#endregion #endregion #region 汉化上下文菜单中的菜单项 foreach (ToolStripMenuItem item in menuStrip.Items)
{
switch (item.Name)
{
case "copied_to_clip":
item.Text = @"复制到剪贴板";
break;
case "copy":
item.Text = @"复制";
item.Click += item_Click;
break;
case "page_setup":
item.Text = @"页面设置...";
break;
case "print":
item.Text = @"打印...";
break;
case "save_as":
item.Text = @"另存图表...";
break;
case "set_default":
item.Text = @"恢复默认大小";
break;
case "show_val":
item.Text = @"显示节点数值";
break;
case "title_def":
item.Text = @"标题";
break;
case "undo_all":
item.Text = @"还原所有缩放";
break;
case "unpan":
item.Text = @"还原上一步缩放";
break;
case "unzoom":
item.Text = @"还原缩放";
break; }
} #endregion
}
上面代码包含了汉化右键菜单的代码,主要的是上面扩展右键菜单的代码部分
ToolStripMenuItem mnuYAxisUpLower = null;
for (int i = ; i < control.GraphPane.YAxisList.Count; i++)
{
YAxis yAxis = control.GraphPane.YAxisList[i];
mnuYAxisUpLower = new ToolStripMenuItem();
mnuYAxisUpLower.Name = "mnuYAxisUpLower" + i;
mnuYAxisUpLower.Text = String.Format("设置[{0}]上下限", yAxis.Title.Text);
mnuYAxisUpLower.Click += delegate(object sender, EventArgs e)
{
Dialog.FrmSetScaleMaxMin frmSetScaleMaxMin = new FrmSetScaleMaxMin(mnuYAxisUpLower.Text, yAxis.Scale.Max, yAxis.Scale.Min);
DialogResult result = frmSetScaleMaxMin.ShowDialog();
if (result == DialogResult.OK)
{
yAxis.Scale.Max = frmSetScaleMaxMin.Max;
yAxis.Scale.Min = frmSetScaleMaxMin.Min;
//更改上下限后刷新曲线图
control.AxisChange();
control.Refresh();
control.Invalidate();
}
};
menuStrip.Items.Add(mnuYAxisUpLower);
}
注:
首先循环所有的Y轴,并通过YAxis yAxis =
control.GraphPane.YAxisList[i]获取Y轴对象。然后设置菜单选项的名称、文本和点击事件。
在点击事件中弹出设置上下限窗口
窗口布局设置如下
然后修改窗体代码为
public partial class FrmSetScaleMaxMin : DevExpress.XtraEditors.XtraForm
{
#region 字段定义 private string _title = String.Empty; //保存要设置的坐标标题
private double _orignalMax = 0.0; //保存原坐标上限
private double _orignalMin = 0.0; //保存原坐标下限 #endregion #region 构造方法 public FrmSetScaleMaxMin(string title, double orignalMax, double orignalMin)
{
this._title = title;
this._orignalMax = orignalMax;
this._orignalMin = orignalMin;
InitializeComponent();
} #endregion #region 属性定义 /// <summary>
/// 设置后的坐标上限
/// </summary>
public double Max
{
get
{
double value = 0.0;
double.TryParse(this.txtMax.EditValue.ToString(), out value);
return value;
}
} /// <summary>
/// 设置后的坐标下限
/// </summary>
public double Min
{
get
{
double value = 0.0;
double.TryParse(this.txtMin.EditValue.ToString(), out value);
return value;
}
} #endregion #region 事件处理 /// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmSetScaleMaxMin_Load(object sender, EventArgs e)
{
this.Text = this._title;
this.txtMax.EditValue = this._orignalMax;
this.txtMin.EditValue = this._orignalMin;
} /// <summary>
/// 确定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{ this.DialogResult = System.Windows.Forms.DialogResult.OK;
} /// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
} #endregion }
点击确定后返回结果并设置Y轴刻度的最大和最小值,然后刷新曲线图。
最后将此右键菜单项添加到右键中去。
Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限的更多相关文章
- Winform中自定义xml配置文件后对节点进行读取与写入
场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...
- Echart自定义y轴刻度信息2
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- highchart 设置双Y轴坐标 双x轴坐标方法
我们的图表一旦引入了两种不同单位或者数量级相差很大的数据以后,这时候需要两种坐标对其进行计量. 下面以设置双Y轴为例, y轴坐标的参数设置成: yAxis: [{ title: { text: '坐标 ...
- Winform中自定义ZedGraph右键复制成功后的提示
场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...
- 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
根据项目的需要,对已经完成的Unity三维模型以及游戏要使用Winform进行包装,也就是使用Winform做一层外壳.因此在展示Unity的时候使用到了UnityWebPlayer这个插件,对于此插 ...
- Winform中自定义xml配置文件,并配置获取文件路径
场景 在Winform程序中,需要将一些配置项存到配置文件中,这时就需要自定义xml的配置文件格式.并在一些工具类中去获取配置文件的路径并加载其内容. 关注公众号霸道的程序猿获取编程相关电子书.教程推 ...
- winform中DataGrid控件的宽度设置
最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找 ...
- Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难
// winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...
随机推荐
- java之线程(线程的创建方式、java中的Thread类、线程的同步、线程的生命周期、线程之间的通信)
CPU:10核 主频100MHz 1核 主频 3GHz 那么哪一个CPU比较好呢? CPU核不是越多越好吗?并不一定.主频用于衡量GPU处理速度的快慢,举个例子10头牛运送货物快还是1架飞机运 ...
- ObjectPool 对象池设计模式
Micosoft.Extension.ObjectPool 源码架构.模式分析: 三大基本对象: ObjectPool抽象类 ObjectPoolProvider抽象类 IPooledObjectPo ...
- 通过谷歌浏览器从官网下载Android Studio
谷歌访问助手安装教程参考:https://www.cnblogs.com/waiwai14/p/11697371.html 谷歌访问助手下载地址:https://pan.baidu.com/s/1YH ...
- 如何减小ABAP业务代码的复杂度
在程序开发的过程中,相同的功能往往有不同的实现方式.对于可以实现同样功能的不同代码,复杂度是用于比较其质量优劣的重要指标. 在本文中,代码复杂度是指代码被理解/修改的难易程度.越容易被理解.修改的代码 ...
- 2019前端面试系列——CSS面试题
盒模型 /* 红色区域的大小是多少?200 - 20*2 - 20*2 = 120 */ .box { width: 200px; height: 200px; padding: 20px; marg ...
- 高级Java开发人员最常访问的几个网站
这是高级Java开发人员最常访问的几个网站. 这些网站提供新闻,一般问题或面试问题的答案,精彩的讲座等.质量是优秀网站的关键因素,这此网站都有较高的质量内容.下面逐一介绍: 1. Stackoverf ...
- WPF数据可视化-瀑布图
实现方式一: 将数据(Point[])根据索引沿X轴使用虚拟画布进行绘制,每个数据绘制大小为1px * 1px:最终绘制出的宽度等于数据的总长度.标记并存储当前绘制的图为PreviousBitmap; ...
- 小程序封装request请求,统一API
程序开发中都会调用后端工程师开发的API,小程序的开发文档提供了相对实用的APIwx.request(),但是在开发的过程中,又遇到了一些问题,在小程序的项目开发时,调用的API不止一个,同一个API ...
- Geoserver安装
准备内容 安装环境:win10*64位专业版 安装文件:geoserver-2.15.2 安装步骤 安装JDK 1.安装GeoServer是基于Java的环境,所以需要先装Jdk环境. 2.前往官网下 ...
- iOS----------componentsJoinedByString 和 componentsSeparatedByString 的方法的区别
将string字符串转换为array数组 NSArray *array = [Str componentsSeparatedByString:@","]; ==反向方法 将arr ...