日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限

發(fā)布時間:2025/3/19 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

場景

Winforn中實(shí)現(xiàn)ZedGraph自定義添加右鍵菜單項(xiàng)(附源碼下載):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716

Winform中實(shí)現(xiàn)ZedGraph中曲線右鍵顯示為中文:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292

在上面兩篇文章的基礎(chǔ)上,已經(jīng)實(shí)現(xiàn)的ZedGraph的右鍵效果

?

現(xiàn)在需要根據(jù)當(dāng)前圖形的Y軸的選項(xiàng)自動追加右鍵菜單,打開設(shè)置Y軸上下限的輸入面板,進(jìn)而設(shè)置Y軸的上下限。

比如當(dāng)曲線圖有兩個Y軸,那么在右鍵時就會顯示兩個設(shè)置上下限的菜單。

?

點(diǎn)擊相應(yīng)的右鍵菜單時彈出設(shè)置上下限的窗口

?

將上限設(shè)置為150之后

?

注:

博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號
霸道的程序猿
獲取編程相關(guān)電子書、教程推送與免費(fèi)下載。

實(shí)現(xiàn)

在初始化ZedGraph的圖形方法中綁定其右鍵菜單事件

zgc.ContextMenuBuilder -= zgc_ContextMenuBuilder;???? //上下文菜單生成事件訂閱 zgc.ContextMenuBuilder += zgc_ContextMenuBuilder;???? //上下文菜單生成事件訂閱

然后在右鍵菜單事件中

private static void zgc_ContextMenuBuilder(ZedGraphControl control, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectStateobjState){#region 擴(kuò)展上下文菜單#region 設(shè)置上下限菜單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("設(shè)置[{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 漢化上下文菜單中的菜單項(xiàng)foreach (ToolStripMenuItem item in menuStrip.Items){switch (item.Name){case "copied_to_clip":item.Text = @"復(fù)制到剪貼板";break;case "copy":item.Text = @"復(fù)制";item.Click += item_Click;break;case "page_setup":item.Text = @"頁面設(shè)置...";break;case "print":item.Text = @"打印...";break;case "save_as":item.Text = @"另存圖表...";break;case "set_default":item.Text = @"恢復(fù)默認(rèn)大小";break;case "show_val":item.Text = @"顯示節(jié)點(diǎn)數(shù)值";break;case "title_def":item.Text = @"標(biāo)題";break;case "undo_all":item.Text = @"還原所有縮放";break;case "unpan":item.Text = @"還原上一步縮放";break;case "unzoom":item.Text = @"還原縮放";break;}}#endregion}

上面代碼包含了漢化右鍵菜單的代碼,主要的是上面擴(kuò)展右鍵菜單的代碼部分

?

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("設(shè)置[{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);}

注:

首先循環(huán)所有的Y軸,并通過YAxis yAxis = control.GraphPane.YAxisList[i]獲取Y軸對象。然后設(shè)置菜單選項(xiàng)的名稱、文本和點(diǎn)擊事件。

在點(diǎn)擊事件中彈出設(shè)置上下限窗口

窗口布局設(shè)置如下

?

然后修改窗體代碼為

public partial class FrmSetScaleMaxMin : DevExpress.XtraEditors.XtraForm{#region 字段定義private string _title = String.Empty;?????? //保存要設(shè)置的坐標(biāo)標(biāo)題private double _orignalMax = 0.0;?????????? //保存原坐標(biāo)上限private double _orignalMin = 0.0;?????????? //保存原坐標(biāo)下限#endregion#region 構(gòu)造方法public FrmSetScaleMaxMin(string title, double orignalMax, double orignalMin){this._title = title;this._orignalMax = orignalMax;this._orignalMin = orignalMin;InitializeComponent();}#endregion#region 屬性定義/// <summary>/// 設(shè)置后的坐標(biāo)上限/// </summary>public double Max{get{double value = 0.0;double.TryParse(this.txtMax.EditValue.ToString(), out value);return value;}}/// <summary>/// 設(shè)置后的坐標(biāo)下限/// </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}

點(diǎn)擊確定后返回結(jié)果并設(shè)置Y軸刻度的最大和最小值,然后刷新曲線圖。

最后將此右鍵菜單項(xiàng)添加到右鍵中去。

總結(jié)

以上是生活随笔為你收集整理的Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。