场景

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.ContextMenuObjectStateobjState){#region 扩展上下文菜单#region 设置上下限菜单ToolStripMenuItem mnuYAxisUpLower = null;for (int i = 0; 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 = 0; 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轴刻度的上下限相关推荐

  1. Winform中自定义xml配置文件后对节点进行读取与写入

    场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...

  2. html表格怎么绑定数据类型,Excel中表格添加数据标签及设置格式的操作方法

    Excel图表以其直观的展示功能深受用户喜爱,但有些初学者对于生成图表后如何添加数据标签有所困扰,今天,学习啦小编就教大家在Excel中表格添加数据标签及设置格式的操作方法. Excel中表格添加数据 ...

  3. R语言ggplot2可视化、在可视化区域中自定义添加多个大小不同矩形阴影区域、自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles)

    R语言ggplot2可视化.在可视化区域中自定义添加多个大小不同矩形阴影区域.自定义配置大小不同矩形阴影区域的颜色(Adding multiple shadows/rectangles) 目录

  4. winform 中自定义有透明度的panel,可用于加载遮盖层

    在winform 中自定义有透明度的panel,可用于加载遮盖层,代码如下: public class ExtendedPanel : Panel{private const int WS_EX_TR ...

  5. echarts中自定义图片的矢量路径设置

    echarts中自定义图片的矢量路径设置 在echarts象形柱图中要使用自定义的图片有三种格式,如下图: 前面两种方式我们项目中也常用到,第三种是矢量路径,如何获取这个矢量路径呢,方法如下: 第一步 ...

  6. python使用matplotlib可视化、自定义设置Y轴刻度标签字体的大小( setting axis ticks size in matplotlib y axis)

    python使用matplotlib可视化.自定义设置Y轴刻度标签字体的大小( setting axis ticks size in matplotlib y axis) 目录

  7. echarts中设置双Y轴左右刻度线一致

    echarts中设置双Y轴左右刻度线一致 一.效果图 二.主要代码 一.效果图 二.主要代码 this.taskxAxis = []this.taskSeries = [[], []]taskInit ...

  8. python坐标轴刻度设置_Python Matplotlib 设置x/y坐标轴刻度

    刻度设置 参考文档: xticks 命令 yticks 命令 以xticks为例: matplotlib.pyplot.xticks(args, *kwargs) 获取或者设置当前刻度位置和文本的 x ...

  9. Apache POI 生成折线图+柱状图设置双Y轴并导出word文档

    实际项目中遇到的问题,相关信息实在较少,怕自己忘记,菜鸟记录一下 我设置的是双Y轴的组和图表.左侧为折线图Y轴,右侧为柱状图Y轴. 直接上代码. // An highlighted block pub ...

最新文章

  1. Filter 设计模式编码实践
  2. 【数据平台】centos下部署anaconda2和pyhs2组件
  3. Matlab/Simulink电力系统——无穷大功率电源供电系统三相短路仿真
  4. swift 去json空格_我尽力了,你们快些拿去吧!
  5. linux c之在终端如何依赖.o文件(静态链接库)运行C文件的命令
  6. [10] ADB 修改设置
  7. N - Dragon Balls(并查集+深度的意义
  8. 成绩记录薄系统C语言,成绩记录簿C语言版.doc
  9. hash 表 java_java hash表
  10. 小米8ios图标包下载_小米手机中这么实用的隐藏功能,知道的人居然那么少?真可惜...
  11. 苹果Mac视频特效合成神器:Blackmagic Fusion Studio
  12. 查找丢包故障点的一个好命令:pathping
  13. visio2013激活软件
  14. OCR文字识别软件那个好?
  15. MyBatis源码阅读指南
  16. HTML5+CSS大作业 网页制作代码_大学生网页制作作业代码——年会抽奖网页设计(1页)
  17. AXI_lite 总线学习
  18. hexo史上最全搭建教程(转载)
  19. 大白菜U盘安装win10操作系统
  20. wordpress配置菜单栏

热门文章

  1. java io读取doc内容_Java word 内容读取-Go语言中文社区
  2. Spring Bean的生命周期(详细)
  3. apache dubbo 自定义全局统一的异常处理器
  4. 关于拦截hao123页面广告的自定义规则
  5. mysql查询出去年某月_Mysql 查询某年,某季度,某月,某天搜索方法总结
  6. 删除苹果自带软件后果_删除 iPhone 自带的软件会有什么影响?
  7. shell+中sum的用法_shell高级用法
  8. 微型计算机 2018 5月,现在是2018年,我的电脑最近总是弹出说有重要更新,提示自2017年5月9日后,microsoft - Microsoft Community...
  9. 如何提高lstm的预测精度_如何提高示波器的测试精度?五大因素助您了解!
  10. 统计gitlab代码行脚本_一点也不复杂, GitLab Webhook 自动部署代码