ChartPanel.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using ErgometerLibrary;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8. using System.Windows.Forms.DataVisualization.Charting;
  9. namespace ErgometerDoctorApplication
  10. {
  11. public class ChartPanel : Panel
  12. {
  13. private Chart chart;
  14. private MetingType type;
  15. private ChartArea chartArea;
  16. private Series series;
  17. private SeriesChartType ChartType;
  18. public ChartPanel(MetingType type, SeriesChartType charttype) : base()
  19. {
  20. this.type = type;
  21. this.ChartType = charttype;
  22. this.chart = new Chart();
  23. this.chartArea = new ChartArea();
  24. this.chart.Titles.Add(new Title(type.ToString()));
  25. this.Location = new System.Drawing.Point(0, 0);
  26. this.Size = new System.Drawing.Size(400, 250);
  27. this.Controls.Add(chart);
  28. this.series = createSerie();
  29. this.chartArea.Name = "chartArea";
  30. this.chart.Size = new System.Drawing.Size(400, 250);
  31. this.chart.Dock = DockStyle.Fill;
  32. this.chart.Series.Add(series);
  33. this.chart.Text = "chart";
  34. this.chart.ChartAreas.Add(chartArea);
  35. }
  36. public void updateChart(List<Meting> metingen)
  37. {
  38. chart.Series[0] = createSerie();
  39. for (int i = 0; i < metingen.Count; i++)
  40. {
  41. chart.Series[0].Points.Add(getMetingType(metingen[i]));
  42. }
  43. chart.Update();
  44. }
  45. public Series createSerie()
  46. {
  47. Series serie = new Series();
  48. serie.Name = "series";
  49. serie.ChartType = ChartType;
  50. serie.ChartArea = "chartArea";
  51. serie.BorderWidth = 3;
  52. return serie;
  53. }
  54. public int getMetingType(Meting meting)
  55. {
  56. switch (type)
  57. {
  58. case MetingType.HEARTBEAT:
  59. return meting.HeartBeat;
  60. case MetingType.RPM:
  61. return meting.RPM;
  62. case MetingType.SPEED:
  63. return (int)meting.Speed;
  64. case MetingType.DISTANCE:
  65. return (int)meting.Distance;
  66. case MetingType.POWER:
  67. return meting.Power;
  68. case MetingType.ENERGY:
  69. return meting.Energy;
  70. case MetingType.SECONDS:
  71. return meting.Seconds;
  72. case MetingType.ACTUALPOWER:
  73. return meting.ActualPower;
  74. default:
  75. return 0;
  76. }
  77. }
  78. public enum MetingType
  79. {
  80. HEARTBEAT,
  81. RPM,
  82. SPEED,
  83. DISTANCE,
  84. POWER,
  85. ENERGY,
  86. SECONDS,
  87. ACTUALPOWER
  88. }
  89. }
  90. }