WInform中实现设置ZedGraph中曲线的X轴与Y轴的上限与下限

落日映苍穹つ 2024-04-17 16:05 139阅读 0赞

场景

Winforn中设置ZedGraph曲线图的属性、坐标轴属性、刻度属性:

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

在上面实现曲线相关属性的设置的基础上,要能修改曲线图的X轴以及Y轴的上限和下限。

效果

20190828135354859.gif

实现

设置Y轴的上限

拖拽按钮,双击进入其点击事件

  1. private void button8_Click(object sender, EventArgs e)
  2. {
  3. myPane.YAxis.Scale.Max = 1500;
  4. //更新图表
  5. zedGraphControl1.Invalidate();
  6. }

设置Y轴的下限

拖拽按钮,双击进入其点击事件

  1. private void button9_Click(object sender, EventArgs e)
  2. {
  3. myPane.YAxis.Scale.Min = -1500;
  4. //更新图表
  5. zedGraphControl1.Invalidate();
  6. }

设置X轴的上限

拖拽按钮,双击进入其点击事件

  1. private void button10_Click(object sender, EventArgs e)
  2. {
  3. myPane.XAxis.Scale.Max = 60;
  4. //更新图表
  5. zedGraphControl1.Invalidate();
  6. }

设置X轴的下限

拖拽按钮,双击进入其点击事件

  1. private void button11_Click(object sender, EventArgs e)
  2. {
  3. myPane.XAxis.Scale.Min = -5;
  4. //更新图表
  5. zedGraphControl1.Invalidate();
  6. }

完整示例代码

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using ZedGraph;
  11. namespace ZedGraphTest
  12. {
  13. public partial class Form1 : Form
  14. {
  15. GraphPane myPane = new GraphPane();
  16. public Form1()
  17. {
  18. InitializeComponent();
  19. //Form1初始化后创建设置控件的方法并将当前ZedGraph控件传递
  20. createPane(zedGraphControl1);
  21. }
  22. //需要引入命名空间--using ZedGraph;
  23. public void createPane(ZedGraphControl zgc)
  24. {
  25. myPane = zgc.GraphPane;
  26. //设置图表标题 和 x y 轴标题
  27. myPane.Title.Text = "霸道测试标题";
  28. myPane.XAxis.Title.Text = "X轴标题";
  29. myPane.YAxis.Title.Text = "Y轴标题";
  30. //更改标题的字体
  31. FontSpec myFont = new FontSpec("Arial",16,Color.Black,false,false,false);
  32. myPane.XAxis.Title.FontSpec = myFont;
  33. myPane.YAxis.Title.FontSpec = myFont;
  34. // 造一些数据,PointPairList里有数据对x,y的数组
  35. Random y = new Random();
  36. PointPairList list1 = new PointPairList();
  37. for (int i = 0; i < 50; i++)
  38. {
  39. double x = i;
  40. double y1 = y.NextDouble() * 1000;
  41. list1.Add(x, y1); //添加一组数据
  42. }
  43. // 用list1生产一条曲线,标注是“曲线1”
  44. //SymbolType,枚举代表曲线的样式
  45. //Square = 0,
  46. //Diamond = 1,
  47. //Triangle = 2,
  48. //Circle = 3,
  49. //XCross = 4,
  50. //Plus = 5,
  51. //Star = 6,
  52. //TriangleDown = 7,
  53. //HDash = 8,
  54. //VDash = 9,
  55. //UserDefined = 10,
  56. //Default = 11,
  57. //None = 12,
  58. LineItem myCurve = myPane.AddCurve("曲线1", list1, Color.Red, SymbolType.None);
  59. //填充图表颜色
  60. myPane.Fill = new Fill(Color.White, Color.LightGray, 45.0f);
  61. //以上生成的图标X轴为数字,下面将转换为日期的文本
  62. string[] labels = new string[50];
  63. for (int i = 0; i < 50; i++)
  64. {
  65. labels[i] = System.DateTime.Now.AddDays(i).ToShortDateString();
  66. }
  67. #region 坐标轴属性设置
  68. //X轴类型
  69. myPane.XAxis.Type = AxisType.Text;
  70. //显示小刻度 是false则看不到效果
  71. myPane.XAxis.MinorGrid.IsVisible = true;
  72. //线的颜色
  73. myPane.XAxis.Color = Color.Black;
  74. //点线中点与点之间的间隔
  75. myPane.XAxis.MinorGrid.DashOff = 1f;
  76. //点线中点的长度
  77. myPane.XAxis.MinorGrid.DashOn = 1f;
  78. //画笔宽度
  79. myPane.XAxis.MinorGrid.PenWidth = 1f;
  80. //
  81. #endregion
  82. #region 坐标轴上刻度线设置
  83. //X轴文本取值
  84. myPane.XAxis.Scale.TextLabels = labels;
  85. //第一个刻度从哪里开始
  86. myPane.XAxis.Scale.BaseTic = 1;
  87. //刻度值的字体属性
  88. myPane.XAxis.Scale.FontSpec = myFont;
  89. #endregion
  90. //画到zedGraphControl1控件中,此句必加
  91. zgc.AxisChange();//在数据变化时绘图
  92. //更新图表
  93. zedGraphControl1.Invalidate();
  94. //重绘控件
  95. Refresh();
  96. #region 属性设置
  97. //是否允许横向缩放
  98. this.zedGraphControl1.IsEnableHZoom = true;
  99. //是否允许纵向缩放
  100. this.zedGraphControl1.IsEnableVZoom = true;
  101. //是否允许缩放
  102. this.zedGraphControl1.IsEnableZoom = true;
  103. //是否显示右键菜单
  104. this.zedGraphControl1.IsShowContextMenu = true;
  105. //复制图像时是否显示提示信息
  106. this.zedGraphControl1.IsShowCopyMessage = true;
  107. //鼠标在图表上移动时是否显示鼠标所在点对应的坐标 默认为false
  108. this.zedGraphControl1.IsShowCursorValues = true;
  109. //是否显示横向滚动条
  110. this.zedGraphControl1.IsShowHScrollBar = true;
  111. //是否显示纵向滚动条
  112. this.zedGraphControl1.IsShowVScrollBar = true;
  113. //鼠标经过图表上的点时是否显示该点所对应的值 默认为false
  114. this.zedGraphControl1.IsShowPointValues = true;
  115. //使用滚轮时以鼠标所在点为中心进行缩放还是以图形中心进行缩放
  116. //this.zedGraphControl1.IsZoomOnMouseCenter = true;
  117. #endregion
  118. //修改右键为中文菜单
  119. this.zedGraphControl1.ContextMenuBuilder += MyContextMenuBuilder;
  120. }
  121. private void zedGraphControl1_Load(object sender, EventArgs e)
  122. {
  123. }
  124. /// <summary>
  125. /// 打印预览
  126. /// </summary>
  127. /// <param name="sender"></param>
  128. /// <param name="e"></param>
  129. private void button1_Click(object sender, EventArgs e)
  130. {
  131. this.zedGraphControl1.DoPrintPreview();
  132. }
  133. //复制到剪切板
  134. private void button2_Click(object sender, EventArgs e)
  135. {
  136. //ture代表复制成功提示
  137. this.zedGraphControl1.Copy(true);
  138. }
  139. /// <summary>
  140. /// 获取图片并保存
  141. /// </summary>
  142. /// <param name="sender"></param>
  143. /// <param name="e"></param>
  144. private void button3_Click(object sender, EventArgs e)
  145. {
  146. //获取图像
  147. Image image = this.zedGraphControl1.GetImage();
  148. //保存照片吗,指定保存路径
  149. image.Save(@"C:\Users\HAOHAO\Desktop\1.png");
  150. //弹窗提示
  151. MessageBox.Show("保存成功");
  152. }
  153. /// <summary>
  154. /// 显示另存为对话框
  155. /// </summary>
  156. /// <param name="sender"></param>
  157. /// <param name="e"></param>
  158. private void button4_Click(object sender, EventArgs e)
  159. {
  160. this.zedGraphControl1.SaveAs();
  161. }
  162. /// <summary>
  163. /// 另存为BMP文件
  164. /// </summary>
  165. /// <param name="sender"></param>
  166. /// <param name="e"></param>
  167. private void button5_Click(object sender, EventArgs e)
  168. {
  169. this.zedGraphControl1.SaveAsBitmap();
  170. }
  171. /// <summary>
  172. /// 另存为EMF文件
  173. /// </summary>
  174. /// <param name="sender"></param>
  175. /// <param name="e"></param>
  176. private void button6_Click(object sender, EventArgs e)
  177. {
  178. this.zedGraphControl1.SaveAsEmf();
  179. }
  180. /// <summary>
  181. /// 一键复原
  182. /// </summary>
  183. /// <param name="sender"></param>
  184. /// <param name="e"></param>
  185. private void button7_Click(object sender, EventArgs e)
  186. {
  187. //一键复原缩放
  188. this.zedGraphControl1.ZoomOutAll(myPane);
  189. }
  190. //右击菜单变中文
  191. private static void MyContextMenuBuilder(ZedGraphControl control, ContextMenuStrip menuStrip,
  192. Point mousePt, ZedGraphControl.ContextMenuObjectState objState)
  193. {
  194. foreach (ToolStripMenuItem item in menuStrip.Items)
  195. {
  196. switch (item.Name)
  197. {
  198. case "copied_to_clip":
  199. item.Text = @"复制到剪贴板";
  200. break;
  201. case "copy":
  202. item.Text = @"复制";
  203. break;
  204. case "page_setup":
  205. item.Text = @"页面设置...";
  206. break;
  207. case "print":
  208. item.Text = @"打印...";
  209. break;
  210. case "save_as":
  211. item.Text = @"另存图表...";
  212. break;
  213. case "set_default":
  214. item.Text = @"恢复默认大小";
  215. break;
  216. case "show_val":
  217. item.Text = @"显示节点数值";
  218. break;
  219. case "title_def":
  220. item.Text = @"标题";
  221. break;
  222. case "undo_all":
  223. item.Text = @"还原缩放/移动";
  224. break;
  225. case "unpan":
  226. item.Text = @"还原移动";
  227. break;
  228. case "unzoom":
  229. item.Text = @"还原缩放";
  230. break;
  231. case "x_title_def":
  232. item.Text = @"X 轴";
  233. break;
  234. case "y_title_def":
  235. item.Text = @"Y 轴";
  236. break;
  237. }
  238. }
  239. }
  240. private void button8_Click(object sender, EventArgs e)
  241. {
  242. myPane.YAxis.Scale.Max = 1500;
  243. //更新图表
  244. zedGraphControl1.Invalidate();
  245. }
  246. //设置Y轴下限
  247. private void button9_Click(object sender, EventArgs e)
  248. {
  249. myPane.YAxis.Scale.Min = -1500;
  250. //更新图表
  251. zedGraphControl1.Invalidate();
  252. }
  253. /// <summary>
  254. /// 设置X轴上限
  255. /// </summary>
  256. /// <param name="sender"></param>
  257. /// <param name="e"></param>
  258. private void button10_Click(object sender, EventArgs e)
  259. {
  260. myPane.XAxis.Scale.Max = 60;
  261. //更新图表
  262. zedGraphControl1.Invalidate();
  263. }
  264. /// <summary>
  265. /// 设置X轴下限
  266. /// </summary>
  267. /// <param name="sender"></param>
  268. /// <param name="e"></param>
  269. private void button11_Click(object sender, EventArgs e)
  270. {
  271. myPane.XAxis.Scale.Min = -5;
  272. //更新图表
  273. zedGraphControl1.Invalidate();
  274. }
  275. }
  276. }

发表评论

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

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

相关阅读