C#中利用LightningChart繪製曲線(及LightningChart介紹)

最近在做一個「基於C#語言的電爐溫控制軟體設計」的設計,我在大學並不是專業學習C#語言編程的,對C#的學習研究完全是處於興趣,所以編程技術也不是很厲害,遇到問題多參照網路上的開源碼。

這不,在做這個課題的時候就遇到了這麼一個問題,既然是要控制電爐溫,就離不開溫度曲線的實時繪製顯示,就希望能夠有那麼一個控制項能夠完成曲線繪製,尋遍網路,嘗試過許多控制項,也試過VisualStudio2015中的Chart控制項,效果都不是很好。有的網友說在Panel中直接DrawLine就行,我覺得更不行,CSDN中也有小夥伴提供使用pictureBox繪製的方法,但在我看來,還是不是十分理想。

在多次搜索下,終於找到了這麼一個相當完美的控制項:LightningChart

接下來就介紹一下,我用LightningChart繪製曲線的編程思路。

先給大家看一下最後的效果圖吧,以便不是想要這種效果的小夥伴另尋他法:

這兒不得不提一下LightningChart的一個優點:在圖中的曲線繪製區域滑動滾輪,還能隨意地放大和縮小曲線便於觀察曲線的細節,這兒附上向後滑動滑鼠滾輪縮小曲線後的效果圖:

用了LightningChart才發現它的強大,上圖就是理想中我想要達到的效果。

這兒附上具體的繪製曲線的代碼:

  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. //添加引用集
  11. using Arction.WinForms.Charting;
  12. using Arction.WinForms.Charting.SeriesXY;
  13. namespace WindowsFormsApplication5
  14. {
  15. public partial class Form1 : Form
  16. {
  17. public Form1()
  18. {
  19. InitializeComponent();
  20. }
  21. //畫線方法
  22. private void PaintLine()
  23. {
  24. DataBaseOpe ope = new DataBaseOpe();
  25. //禁用屬性改變引起的重畫,以便更快的渲染
  26. lightningChartUltimate1.BeginUpdate();
  27. //lightningChartUltimate1.Dock = DockStyle.Fill;
  28. //添加點線系列
  29. PointLineSeries pls = new PointLineSeries(lightningChartUltimate1.ViewXY,
  30. lightningChartUltimate1.ViewXY.XAxes[0],
  31. lightningChartUltimate1.ViewXY.YAxes[0]);
  32. //顯示點
  33. pls.PointsVisible = false;
  34. SeriesPoint[] aPoints = new SeriesPoint[1000];
  35. for (int iPoint = 0; iPoint < ope.GetXmax() + 1; iPoint++)
  36. {
  37. aPoints[iPoint].X = (double)iPoint;
  38. aPoints[iPoint].Y = ope.GetYvalue(iPoint);
  39. }
  40. //為點線系列分配數據
  41. pls.Points = aPoints;
  42. //將點線系列添加進列表
  43. lightningChartUltimate1.ViewXY.PointLineSeries.Add(pls);
  44. //允許Chart繪圖
  45. lightningChartUltimate1.EndUpdate();
  46. }
  47. private void buttonGO_Click(object sender, EventArgs e)
  48. {
  49. DataBaseOpe ope = new DataBaseOpe();
  50. PIDdeal pid = new PIDdeal();
  51. //LightningChart初始化
  52. lightningChartUltimate1.ViewXY.PointLineSeries.Clear();
  53. //資料庫初始化:清空資料庫
  54. ope.ClearDataBase();
  55. //PID變數初始化
  56. pid.PIDinit();
  57. pid.SetValue = double.Parse(textBoxSetValue.Text);
  58. double p = double.Parse(textBoxKp.Text);
  59. double i = double.Parse(textBoxKi.Text);
  60. double d = double.Parse(textBoxKd.Text);
  61. for(int j = 0;j < 1000;j++)
  62. {
  63. ope.AddData(j, pid.PIDcontrol(pid.SetValue, p, i, d));
  64. }
  65. PaintLine();
  66. }
  67. }
  68. }

當然,要實現上面圖中的效果圖還需要用到資料庫操作PID演算法的C#實現方法這兩個關鍵點,加上一個timer控制項還可以實現實時曲線的繪製,我已經實現實時曲線的繪製,但最近還沒有時間將兩個融合,我會把兩個項目都上傳,大家可以試一下,稍作改動便可實現實時曲線的繪製。感興趣的小夥伴可以下載我上傳的完整項目文件進行查看,菜鳥之作,還望海涵。

附上資源下載鏈接(由於剛上傳,可能還處於審核狀態,若下載出錯還望過一會兒再試):

download.csdn.net/downl

這兒是想著重向大家介紹一下LightningChart這個控制項。

我只是初步接觸了這款組件,但其功能之強大令我嘆為觀止。LightningChart是一款快速、先進的2D和3D圖表,支持WPF和WinForms平台,是一款獲得了VisualStudio五星好評的.NET組件。

除了我上面用到的最簡單的繪製曲線功能外,它還有其他十分強大的功能,如下圖所示:

它裡面包含了很多很多種圖表繪製的例子,可供程序猿們實現各種各樣的數據可視化操作。

但不知道為什麼,LightningChart這款強大的.NET組件在網路中的介紹又是少之又少,向我這種想要在網路上參考開源碼的小白都無處尋找。真心希望有越來越多的人使用這個組件,也希望更多地大神注意到這款組件並上傳相關使用經驗給我們這種小白參考。

附上LightningChart下載鏈接:arction.cn/


推薦閱讀:

TAG:前端數據可視化 | 控制項 | NET |