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

浅浅的花香味﹌ 2024-04-18 05:34 122阅读 0赞

场景

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轴设置界面。

  1. private void button12_Click(object sender, EventArgs e)
  2. {
  3. addY = new AddY();
  4. addY.Show();
  5. }

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

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70

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

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

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

  1. private void button1_Click(object sender, EventArgs e)
  2. {
  3. YAxis y = new YAxis();
  4. //标题
  5. y.Title.Text = this.radioGroup1.Text;
  6. //颜色
  7. y.Color = this.colorPickEdit1.Color;
  8. //下限
  9. y.Scale.Min = Double.Parse(this.textEdit1.Text);
  10. //上限
  11. y.Scale.Max = Double.Parse(this.textEdit2.Text);
  12. if (setYaxisEvent != null)
  13. {
  14. setYaxisEvent(y);
  15. }
  16. }

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

在AddY当前页面代码中

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

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

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

此时传递了addYaxis方法名

方法代码:

  1. public void addYaxis(YAxis y)
  2. {
  3. //如果是新增第二条Y轴
  4. if (ycount == 1)
  5. {
  6. //第二条Y轴标题
  7. myPane.Y2Axis.Title.Text = y.Title.Text.ToString();
  8. //第二条Y轴下限
  9. myPane.Y2Axis.Scale.Min = y.Scale.Min;
  10. //第二条Y轴上限
  11. myPane.Y2Axis.Scale.Max = y.Scale.Max;
  12. //设置颜色
  13. myPane.Y2Axis.Color = y.Color;
  14. //设置刻度线字体颜色
  15. myPane.Y2Axis.Scale.FontSpec.FontColor = y.Color;
  16. //设置标题字体颜色
  17. myPane.Y2Axis.Title.FontSpec.FontColor = y.Color;
  18. //让第二条Y轴显示
  19. myPane.Y2Axis.IsVisible = true;
  20. ycount++;
  21. //关闭窗口
  22. addY.Close();
  23. zedGraphControl1.Invalidate();
  24. }
  25. //否则就是新增第三条及以上
  26. else
  27. {
  28. //int yIndex = myPane.YAxisList.Count+1;
  29. // 创建第yIndex条Y轴
  30. YAxis yAxisNew = new YAxis(y.Title.Text.ToString());
  31. yAxisNew.Scale.Min = y.Scale.Min;
  32. yAxisNew.Scale.Max = y.Scale.Max;
  33. //设置Y轴颜色
  34. yAxisNew.Color = y.Color;
  35. //设置刻度线字体颜色
  36. yAxisNew.Scale.FontSpec.FontColor = y.Color;
  37. //设置标题字体颜色
  38. yAxisNew.Title.FontSpec.FontColor = y.Color;
  39. //yAxisNew.Type = AxisType.Text;
  40. //显示小刻度 是false则看不到效果
  41. //yAxisNew.MinorGrid.IsVisible = true;
  42. // turn off the opposite tics so the Y2 tics don't show up on the Y axis
  43. //关闭相反的tics,使y2 tics不会显示在y轴上
  44. yAxisNew.MajorTic.IsInside = true;
  45. yAxisNew.MinorTic.IsInside = true;
  46. yAxisNew.MajorTic.IsOpposite = true;
  47. yAxisNew.MinorTic.IsOpposite = true;
  48. // Align the Y2 axis labels so they are flush to the axis
  49. //对齐Y2轴标签,使其与轴平齐
  50. //yAxisNew.Scale.Align = AlignP.Inside;
  51. //添加到Y轴的list
  52. myPane.YAxisList.Add(yAxisNew);
  53. //关闭窗口
  54. addY.Close();
  55. zedGraphControl1.Invalidate();
  56. }
  57. }

效果

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 2

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0JBREFPX0xJVU1BTkdfUUlaSEk_size_16_color_FFFFFF_t_70 3

发表评论

表情:
评论列表 (有 0 条评论,122人围观)

还没有评论,来说两句吧...

相关阅读