Winform中实现ZedGraph新增自定义Y轴上下限、颜色、标题功能

匿名 (未验证) 提交于 2019-12-02 22:09:29

场景

Winform中实现ZedGraph的多条Y轴(附源码下载):

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

在上面实现显示多条自定义Y轴的效果上,改进实现自定义新增Y轴功能。

关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

示例代码下载

https://download.csdn.net/download/badao_liumang_qizhi/11653210

实现

主窗体添加按钮,点击之后弹出Y轴设置界面。

 private void button12_Click(object sender, EventArgs e)         {             addY = new AddY();             addY.Show();          }

其中addY是对应要弹窗显示的窗体对象,其设计如下

此窗体有两个EditText,用来存储Y轴的上下限,然后使用RadioGroup用来设置标题的选择,然后使用

ColorEditPicker进行颜色的选择,以上的控件都是使用的DevExpress的控件。

在点击新增按钮时将控件上的所有属性赋值给声明的YAxis对象。

private void button1_Click(object sender, EventArgs e)         {             YAxis y = new YAxis();             //标题             y.Title.Text = this.radioGroup1.Text;             //颜色             y.Color = this.colorPickEdit1.Color;             //下限             y.Scale.Min = Double.Parse(this.textEdit1.Text);             //上限             y.Scale.Max = Double.Parse(this.textEdit2.Text);              if (setYaxisEvent != null)             {                 setYaxisEvent(y);             }                     }

这里使用的是事件与委托进行跨窗体传递对象。

在AddY当前页面代码中

//委托的定义 public delegate void SetYaxisDelegete(YAxis s); //事件声明 public static event SetYaxisDelegete setYaxisEvent;

然后在主页面Form1中的初始化方法中进行委托的订阅

//添加Y轴 AddY.setYaxisEvent += new AddY.SetYaxisDelegete(addYaxis);

此时传递了addYaxis方法名

方法代码:

public void addYaxis(YAxis y)         {             //如果是新增第二条Y轴             if (ycount == 1)             {                 //第二条Y轴标题                 myPane.Y2Axis.Title.Text = y.Title.Text.ToString();                                //第二条Y轴下限                 myPane.Y2Axis.Scale.Min = y.Scale.Min;                 //第二条Y轴上限                 myPane.Y2Axis.Scale.Max = y.Scale.Max;                 //设置颜色                 myPane.Y2Axis.Color = y.Color;                 //设置刻度线字体颜色                 myPane.Y2Axis.Scale.FontSpec.FontColor = y.Color;                 //设置标题字体颜色                 myPane.Y2Axis.Title.FontSpec.FontColor = y.Color;                 //让第二条Y轴显示                 myPane.Y2Axis.IsVisible = true;                 ycount++;                 //关闭窗口                 addY.Close();                 zedGraphControl1.Invalidate();                              }             //否则就是新增第三条及以上             else             {                 //int yIndex = myPane.YAxisList.Count+1;                 // 创建第yIndex条Y轴                 YAxis yAxisNew = new YAxis(y.Title.Text.ToString());                 yAxisNew.Scale.Min = y.Scale.Min;                 yAxisNew.Scale.Max = y.Scale.Max;                 //设置Y轴颜色                 yAxisNew.Color = y.Color;                 //设置刻度线字体颜色                 yAxisNew.Scale.FontSpec.FontColor = y.Color;                 //设置标题字体颜色                 yAxisNew.Title.FontSpec.FontColor = y.Color;                 //yAxisNew.Type = AxisType.Text;                 //显示小刻度 是false则看不到效果                 //yAxisNew.MinorGrid.IsVisible = true;                 // turn off the opposite tics so the Y2 tics don't show up on the Y axis                 //关闭相反的tics,使y2 tics不会显示在y轴上                 yAxisNew.MajorTic.IsInside = true;                 yAxisNew.MinorTic.IsInside = true;                 yAxisNew.MajorTic.IsOpposite = true;                 yAxisNew.MinorTic.IsOpposite = true;                                                // Align the Y2 axis labels so they are flush to the axis                 //对齐Y2轴标签,使其与轴平齐                 //yAxisNew.Scale.Align = AlignP.Inside;                 //添加到Y轴的list                 myPane.YAxisList.Add(yAxisNew);                 //关闭窗口                 addY.Close();                 zedGraphControl1.Invalidate();             }         }

效果

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!