C#中利用LightningChart繪制曲線圖表


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

這不,在做這個課題的時候就遇到了這么一個問題,既然是要控制電爐溫,就離不開溫度曲線的實時繪制顯示,就希望能夠有那么一個控件能夠完成曲線繪制,尋遍網絡,嘗試過許多控件,也試過VisualStudio2015中的Chart控件,效果都不是很好。有的網友說在Panel中直接DrawLine就行,我覺得更不行,CSDN中也有小伙伴提供使用pictureBox繪制的方法,但在我看來,還是不是十分理想。
在多次搜索下,終於找到了這么一個相當完美的控件:LightningChart 。
接下來就介紹一下,我用LightningChart繪制曲線的編程思路。
先給大家看一下最后的效果圖吧,以便不是想要這種效果的小伙伴另尋他法:
 
這兒不得不提一下LightningChart的一個優點:在圖中的曲線繪制區域滑動滾輪,還能隨意地放大和縮小曲線便於觀察曲線的細節,這兒附上向后滑動鼠標滾輪縮小曲線后的效果圖:
 
用了LightningChart才發現它的強大,上圖就是理想中我想要達到的效果。
這兒附上具體的繪制曲線的代碼:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
//添加引用集
using Arction.WinForms.Charting;
using Arction.WinForms.Charting.SeriesXY;

namespace WindowsFormsApplication5
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
//畫線方法
private void PaintLine()
{
DataBaseOpe ope = new DataBaseOpe();
//禁用屬性改變引起的重畫,以便更快的渲染
lightningChartUltimate1.BeginUpdate();
//lightningChartUltimate1.Dock = DockStyle.Fill;
//添加點線系列
PointLineSeries pls = new PointLineSeries(lightningChartUltimate1.ViewXY,
lightningChartUltimate1.ViewXY.XAxes[0],
lightningChartUltimate1.ViewXY.YAxes[0]);
//顯示點
pls.PointsVisible = false;
SeriesPoint[] aPoints = new SeriesPoint[1000];
for (int iPoint = 0; iPoint < ope.GetXmax() + 1; iPoint++)
{
aPoints[iPoint].X = (double)iPoint;
aPoints[iPoint].Y = ope.GetYvalue(iPoint);
}
//為點線系列分配數據
pls.Points = aPoints;
//將點線系列添加進列表
lightningChartUltimate1.ViewXY.PointLineSeries.Add(pls);
//允許Chart繪圖
lightningChartUltimate1.EndUpdate();
}

private void buttonGO_Click(object sender, EventArgs e)
{
DataBaseOpe ope = new DataBaseOpe();
PIDdeal pid = new PIDdeal();
//LightningChart初始化
lightningChartUltimate1.ViewXY.PointLineSeries.Clear();
//數據庫初始化:清空數據庫
ope.ClearDataBase();
//PID變量初始化
pid.PIDinit();
pid.SetValue = double.Parse(textBoxSetValue.Text);
double p = double.Parse(textBoxKp.Text);
double i = double.Parse(textBoxKi.Text);
double d = double.Parse(textBoxKd.Text);
for(int j = 0;j < 1000;j++)
{
ope.AddData(j, pid.PIDcontrol(pid.SetValue, p, i, d));
}
PaintLine();
}
}
}

當然,要實現上面圖中的效果圖還需要用到數據庫操作和PID算法的C#實現方法這兩個關鍵點,加上一個timer控件還可以實現實時曲線的繪制,我已經實現實時曲線的繪制,但最近還沒有時間將兩個融合,我會把兩個項目都上傳,大家可以試一下,稍作改動便可實現實時曲線的繪制。感興趣的小伙伴可以下載我上傳的完整項目文件進行查看,菜鳥之作,還望海涵。
附上資源下載鏈接(由於剛上傳,可能還處於審核狀態,若下載出錯還望過一會兒再試):

https://download.csdn.net/download/zpkld123/10309584

這兒是想着重向大家介紹一下LightningChart這個控件。
我只是初步接觸了這款組件,但其功能之強大令我嘆為觀止。LightningChart是一款快速、先進的2D和3D圖表,支持WPF和WinForms平台,是一款獲得了VisualStudio五星好評的.NET組件。
除了我上面用到的最簡單的繪制曲線功能外,它還有其他十分強大的功能,如下圖所示:
 
它里面包含了很多很多種圖表繪制的例子,可供程序猿們實現各種各樣的數據可視化操作。
但不知道為什么,LightningChart這款強大的.NET組件在網絡中的介紹又是少之又少,向我這種想要在網絡上參考開源碼的小白都無處尋找。真心希望有越來越多的人使用這個組件,也希望更多地大神注意到這款組件並上傳相關使用經驗給我們這種小白參考。
附上LightningChart下載鏈接:http://www.arction.cn/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM