当前位置:   article > 正文

C# Winform Chart控件用法2 多个chart动态曲线绘制_c#winform曲线控件

c#winform曲线控件

1、拖3个chart到新建的窗口中,分别命名为chart1,chart2,chart3,再放一个Button,如下图

 2、对chart1 的ChartAreasSeries属性进行相应的设置

 

ChartAreas : 主要对游标和坐标轴进行设置,我们保持默认就可以。

其实大部。分的设置,都在Series属性进行,比如设置图标类型(样条曲线、散点、饼图...)、曲线数量、数据点标记样式、图例的名字等等

分别在chart1和chart2添加多一个Series,并在ChartType里设置图形样式,然后我们就可以分别往Series[0]和Series[1]添加数据了。

 chart1.Series[0].Points.AddXY(i + 1, List_ia[i]);   //添加数据

chart1.Series[1].Points.AddXY(i + 1, List_ic[i]);    //添加数据

 chart2相同的操作,只是设置图形样式都为Column分别添加数据后,效果如下

 完整代码

  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.Windows.Forms;
  9. using System.IO.Ports; //使用串口
  10. using System.Threading.Tasks; //线程
  11. using System.Runtime.InteropServices;
  12. using System.Windows.Forms.DataVisualization.Charting;
  13. namespace 多个chart动态曲线绘制
  14. {
  15. public partial class Form1 : Form
  16. {
  17. /*泛型集合用于图表显示*/
  18. private List<int> List_ia = new List<int>();
  19. private List<int> List_ic = new List<int>();
  20. private List<int> List_udc = new List<int>();
  21. private List<int> List_uAdc = new List<int>();
  22. private List<int> List_vel = new List<int>();
  23. Random random = new Random();
  24. public Form1()
  25. {
  26. InitializeComponent();
  27. }
  28. private void Form1_Load(object sender, EventArgs e)
  29. {
  30. }
  31. private void timer1_Tick(object sender, EventArgs e)
  32. {
  33. int num1 = random.Next(0, 99); //随机数
  34. int num2 = random.Next(0, 99);
  35. int num3 = random.Next(0, 99);
  36. int num5 = random.Next(0, 99);
  37. int num4 = random.Next(0, 99);
  38. List_ia.Add(num1); ListRemove(List_ia);
  39. List_ic.Add(num2); ListRemove(List_ic);
  40. List_udc.Add(num3); ListRemove(List_udc);
  41. List_uAdc.Add(num5);ListRemove(List_uAdc);
  42. List_vel.Add(num4); ListRemove(List_vel);
  43. DrawChart(List_ia, List_ic, List_udc, List_uAdc, List_vel);
  44. }
  45. private void DrawChart(List<int> List_ia, List<int> List_ic, List<int> List_udc, List<int> List_uAdc, List<int> List_vel)
  46. {
  47. chart1.Series[0].Points.Clear(); //清除所有点 ,如果不清除,将会出现所有数据叠加
  48. chart1.Series[1].Points.Clear(); //清除所有点
  49. chart2.Series[0].Points.Clear(); //清除所有点
  50. chart2.Series[1].Points.Clear(); //清除所有点
  51. chart3.Series[0].Points.Clear(); //清除所有点
  52. for (int i = 0; i < List_ia.Count; i++)
  53. {
  54. chart1.Series[0].Points.AddXY(i + 1, List_ia[i]); //添加点
  55. }
  56. for (int i = 0; i < List_ic.Count; i++)
  57. {
  58. chart1.Series[1].Points.AddXY(i + 1, List_ic[i]);
  59. }
  60. for (int i = 0; i < List_udc.Count; i++)
  61. {
  62. chart2.Series[0].Points.AddXY(i + 1, List_udc[i]);
  63. }
  64. for (int i = 0; i < List_uAdc.Count; i++)
  65. {
  66. chart2.Series[1].Points.AddXY(i + 1, List_uAdc[i]);
  67. }
  68. for (int i = 0; i < List_vel.Count; i++)
  69. {
  70. chart3.Series[0].Points.AddXY(i + 1, List_vel[i]);
  71. }
  72. }
  73. private void button1_Click(object sender, EventArgs e)
  74. {
  75. if (button1.Text == "开始")
  76. {
  77. timer1.Start();
  78. button1.Text = "暂停";
  79. }
  80. else
  81. {
  82. timer1.Stop();
  83. button1.Text = "开始";
  84. }
  85. }
  86. //当大于80时移除list头部
  87. private void ListRemove(List<int> list)
  88. {
  89. if (list.Count >= 80)
  90. {
  91. list.RemoveAt(0);
  92. }
  93. }
  94. //清除所有的列表
  95. private void ClearAllList()
  96. {
  97. List_ia.Clear();
  98. List_ic.Clear();
  99. List_udc.Clear();
  100. List_vel.Clear();
  101. List_uAdc.Clear();
  102. }
  103. }
  104. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/271013
推荐阅读
相关标签
  

闽ICP备14008679号