最近在做一个“基于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/

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

  1. 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域

    这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...

  2. 利用eChart绘制网页图表

    首先,最好的教程在这里:eCchart eChart所需JS: echarts.min.js china.js echarts.js 页面代码如下: 一.图表 <!DOCTYPE html> ...

  3. 利用ichart绘制网页图表

    首先,最好的教程在这里:ichartjs 有了这个网站,要绘制网页图表简直方便愉快! 接下来说一下使用方法~~~ 进入网站,点击在线设计器 在线设计器的使用方法就不说了,摸索一下就会了!关键在于两个地 ...

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

    C#中利用GDI+绘制旋转文本的文字,网上有很多资料,基本都使用矩阵旋转的方式实现.但基本都只提及按点旋转,若要实现在矩形范围内旋转文本,资料较少.经过琢磨,可以将矩形内旋转转化为按点旋转,不过需要经 ...

  5. 使用D3绘制图表(2)--绘制曲线

    上一篇是使用D3绘制画布,这一篇的内容是在画布上绘制曲线. 1.之前的html代码没有变化,但是我还是贴出来 <!DOCTYPE html> <html> <head&g ...

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

    效果图: <body> <canvas id="test" width="800" height="300">< ...

  7. C# chart控件绘制曲线

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

  8. Mschart应用之曲线图表spline

    本文主要是Mschart应用之曲线图表spline,实现6个模拟数据的图表,其中数据源X轴为当前系统时间,Y轴是由随机函数产生的不同范围的随机数. 首先是自定义一个数据表,然后产生的数据添加到该数据表 ...

  9. 用Chart控件绘制动态图表

    进行程序设计时,选用一个合适的ActiveX控件,有时可大大减少编程工作量.ActiveX 控件(又称OCX)基于COM技术,作为独立的软件模块,它可以在任何程序设计语言中插入使用.本文仅以VC++为 ...

随机推荐

  1. VS的一些实用快捷键及小技巧(不断更新)

    在未选中文本的情况下: ctrl+x 剪贴并删除当前的行,可以用于快速删除整行代码 ctrl+c 复制当前行的代码 ctrl+l 删除当前行 组合键,需要按两次: ctrl+k,ctrl+c 注释当前 ...

  2. 在我朝如何为Brackets安装扩展?

    Brackets是Adobe发起的一个开源的HTML编辑器,界面优美简洁.扩展丰富.支持基于Chrome浏览器的实时预览,非常适合对于Web的开发和学习. 但是Brackets的安装包下载和扩展下载, ...

  3. 在Asp.Net MVC中利用快递100接口实现订阅物流轨迹功能

    前言 分享一篇关于在电商系统中同步物流轨迹到本地服务器的文章,当前方案使用了快递100做为数据来源接口,这个接口是收费的,不过提供的功能还是非常强大的,有专门的售后维护团队.也有免费的方案,类似于快递 ...

  4. C# 使用Google Protocol Buffers

    Google Protocol Buffers 使用3.0版本 下载protoc.exe 下载链接 https://github.com/protocolbuffers/protobuf/releas ...

  5. 09_python_初始函数

    一.定义 函数是对功能和动作的封装 def functionname( parameters ): "函数_文档字符串" function_suite return [expres ...

  6. vue项目常见需求(项目实战笔记)

    一.起步 1.引入reset.css解决手机之间不同分辨率的问题(reset.css为别人封装的css文件) import './assets/styles/reset.css' 使用方式 1rem= ...

  7. Data - 数据思维

    数据思维 数据思维全解析 如何建立数据分析的思维框架 做数据分析时,你的方法论是什么? 数据分析全流程资料,适合各路人马 百度内部培训资料PPT:数据分析的道与术 学会数据分析背后的挖掘思维,分析就完 ...

  8. CI框架入门笔记

    当前(2019-03-22)CodeIgniter 框架的最新版本是 3.1.5,于2017年6月发布,距今快两年了也没有更新,这与 Laravel 的更新速度相比差距太大了.因为确实,它是一个很古老 ...

  9. [原创]内网渗透JSP webSehll连接工具

    工具: JspShellExec编译: VS2012  C# (.NET Framework v2.0)组织: K8搞基大队[K8team]作者: K8拉登哥哥博客: http://qqhack8.b ...

  10. xamarin 安卓输出中文错误 乱码解决

    在编译设置附加参数 -J-Duser.language=en 这个错误信息是来自javac 编译产生的 而中文乱码问题是 GBK 和UTF8 的问题 解决的办法就是让javac 输出英文错误信息 也可 ...