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/

原文地址:https://www.cnblogs.com/lightningchart/p/8659470.html

时间: 2025-01-05 10:04:52

C#中利用LightningChart绘制曲线图表的相关文章

C#GDI+自定义绘制曲线图表控件DataChart 简单实现

C#GDI+自定义绘制曲线图表控件DataChart 这里只说明在计算刻度和曲线绘制的时候 只提供思路,只是做了下简单的计算,不喜勿喷 还望见谅,高手直接飘过吧.这个要做好,还是需要研究研究算法的,比如刻度随着控件的大小发生改变的时候计算不同的值,根据刻度范围来计算刻度以及刻度值等,这里没有研究,制作简单的绘制,让其知道自定义曲线控件的画法,对于新手来讲应该是有一些帮助的.有时间我把研究过后的算法加上做一个通用可靠一点的控件分享. 例子如下图所示 首先百度一张图片,就按照它的样子来绘制 该图片链

java swing中利用PS绘制漂亮的图形界面

首先从网上下载一些漂亮的界面:例如:要制作一个五子棋,那么就可以利用下面这个图形界面. 通过对鼠标位置的监听(主要是获取坐标)而实现不同的功能. 为界面添加鼠标监听: public class MyPicture extends JFrame implements MouseListener{} 从而获取坐标数据: public void mouseEntered(MouseEvent e) { // TODO Auto-generated method stub x=e.getX(); y=e

C#利用GDI+绘制旋转文字等效果

C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. [csharp] view plaincopy using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D;

C#利用GDI+绘制旋转文字等效果实例

本文实例讲述了C#利用GDI+绘制旋转文字等效果的方法,是非常实用的技巧.分享给大家供大家参考之用.具体如下: C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经过不少的计算过程.利用下面的类可以实现该功能. 具体实现代码如下: using System; using System.Collections.Generic; using System

pyqt中使用matplotlib绘制动态曲线

一.项目背景: 看了matplotlib for python developers这本书,基本掌握了在pyqt中显示曲线的做法,于是自己写一个. 二.需求描述: 1)X轴显示时间点,显示长度为1分钟,每一秒钟绘制一个点,X轴长度超过1分钟,则左移1秒刻度,实现动态效果 2)Y轴显示随机变化的数值,1-100 三.准备工作 1环境:python3.3,eric5,pyqt4 四.开始动手: 使用Eric创建新项目: 在设计编码前期主要用到Eric的两个窗口:源码和窗体浏览器,类似delphi.

如何在CAD中绘制曲线?并保存为dwg 格式的?

如何在CAD中绘制曲线?并保存为dwg 格式的?在CAD绘图中,很多的小伙伴们都不知道如何在CAD中绘画出一个S形的曲线.假如你的主管让你完成这样的一份工作,你不可能和你的主管说我不会吧?那你可能就要凉凉呢.那如何在CAD中绘制曲线?并保存为dwg格式呢?具体要怎么操作?下面就来教教大家,想要了解的朋友就一起来看看吧. 步骤一:在电脑桌面任意启动一个浏览器,打开浏览器,在浏览器中搜索迅捷CAD编辑器,鼠标点击官网进入,下载并进行安装.最后启动CAD软件. 步骤二:启动软件之后,在软件页面的正上方

JavaScript+canvas 利用贝塞尔曲线绘制曲线

效果图: <body> <canvas id="test" width="800" height="300"></canvas> <script type="text/javascript"> //一个工具函数,用于将角度从角度制转化成弧度制 function rads(x){ return Math.PI*x/180;} var canvas = document.getEle

C# chart控件绘制曲线

在.NET中以前经常用GDI去绘制,虽然效果也不错,自从.NET 4.0开始,专门为绘制图表而生的Chart控件出现了,有了它,就可以轻松的绘制你所需要的曲线图.柱状图什么的了. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; using System.Windows.Forms.DataVisualization.C

Mschart应用之曲线图表spline

本文主要是Mschart应用之曲线图表spline,实现6个模拟数据的图表,其中数据源X轴为当前系统时间,Y轴是由随机函数产生的不同范围的随机数. 首先是自定义一个数据表,然后产生的数据添加到该数据表中,最后通过chart1.Series[0].Points.AddXY()函数把数据绘制到图表上. 在开始运行界面主要是通过Timer函数不断调用绘制图表,具体图表绘制函数在StartRun类之中,下面是开始运行界面. 开始运行界面后台代码: using System; using System.C