简数社区

查看: 207|回复: 0

[功能干货] C#中使用LightningChart绘制曲线

[复制链接]

10

主题

13

帖子

137

积分

网站编辑

Rank: 8Rank: 8

积分
137
发表于 2018-10-9 09:42:20 | 显示全部楼层 |阅读模式
本帖最后由 ajifwojaf 于 2018-10-9 09:50 编辑

刚看到一篇“基于C#语言开发的电炉温控软件设计”的文章,需要将温度曲线通过实时曲线绘制完成,效果实现得非常完美,如下将以第一人称转述。
-佚名
大家好
在做课题时遇到一个问题,需要使用C#语言控制电炉温度,希望有一个控件能够完成曲线绘制,同时能实时绘制显示;
为此,遍寻网网络,尝试过许多控件,试过VisualStudio2015中的Chart控件,效果都不是很好。有的网友说在Panel中直接DrawLine就行,我觉得更不行,CSDN中也有小伙伴提供使用pictureBox绘制的方法,但在我看来,还是不是十分理想。

在多次搜索下,终于找到了这么一个相当完美的控件: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控件还可以实现实时曲线的绘制,我已经实现实时曲线的绘制,但最近还没有时间将两个融合,大家可以试一下,稍作改动便可实现实时曲线的绘制。

再次隆重的向大家介绍一下LightningChart这个控件。
我只是初步接触了这款组件,但其功能之强大令我叹为观止。LightningChart是一款快速、先进的2D和3D图表,支持WPF和WinForms平台,是一款获得了VisualStudio五星好评的.NET组件。
除了我上面用到的最简单的绘制曲线功能外,它还有其他十分强大的功能,如下图所示:


它里面包含了很多很多种图表绘制的例子,可供程序猿们实现各种各样的数据可视化操作。

但不知道为什么,LightningChart这款强大的.NET组件在网络中的介绍又是少之又少,向我这种想要在网络上参考开源码的小白都无处寻找,直到找到简数科技,为学生或者试用的用户提供免费中文技术支持服务,与他们沟通是非常顺利,真心希望有越来越多的人使用这个组件;

结论
强大的.net组件、功能之强大令人叹为观止、丰富的实例、实时刷新效果超乎想象的LightningChart控件,值得一试。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表