ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

使用各种 WPF Chart图表控件、插件的经历回顾与总结

2021-07-23 12:02:25  阅读:182  来源: 互联网

标签:控件 插件 示例 渲染 Chart 文档 效率


客户为表达对我司 LightningChart 图表控件的喜爱及对我司提供协助表示感谢,特将研究使用 WPF 数据可视化图表控件产品时的一些经历与我们分享,如下将以第一人称转述。

大家好:

因为项目需求,需要基于Chart控件制作一个示波器,用于显示信号的实时波形图。

网上基于WPF开发的Chart控件还是有蛮多的,于是我上网查找了几款不错的Chart控件:ComponentOne、Live Charts、DevExpress以及LightningChart。,对它们进行简单地了解和学习,由于时间有限,所以掌握得不是那么全面,但是对于公司控件的选型基本可以用作参考和判断。

 

控件的选择主要基于以下几点:
a. 效率;

b. 学习成本;

c. 功能丰富性;

 

效率对于实时显示数据是至关重要的。示波器用于实时显示数据,如果数据量不是特别大的话,相信很多Chart控件基本都能够满足这个需求。当然针对不同的项目可能情况不同,所以需要展示的数据量也会存在差别。但是事实上,这样的实时数据的数据量往往是很大的,并且有可能需要显示多条通道 Channel的信号波形图。Chart处理和渲染波形图的效率较低,是很难做到实时显示的。为什么?因为Chart控件无法渲染大量数据,这时为了使程序保持相对流畅地运行,只能通过一些手段和方法来限制数据量,如果数据量太大,即使在显示的范围内做了采样算法,丢弃了一部分数据,还是会在程序里堆积很 多数据等待渲染。由于数据的大量堆积,波形的显示在时间上会较滞后,也就是无法做到实时显示。对于数据点的渲染,一般有两种方式,通过CPU渲染和通过 GPU渲染,显然CPU的并行运算和GPU相比是相形见绌的,所以GPU渲染要比CPU渲染效率高很多。

学习使用一个控件,最理想的是该控件具有足够的资料、文档和使用实例。这样学习效率才会得到成倍的提高,学习成本才会减低。如果投入了大量时间,还是不知道怎么使用那个控件,那么即使那个控件做得再好,也只是一堆无用的代码而已。简单来说,相比几个控件,哪个能够满足我需求的同时,还具有完备的文档和资料,我就会选择哪个。

需求是多样性的,同时也是在不断变化的。因此符合这种需求变化的多样性,要么把控件设计得比较灵活,可以任意调整和修改,但是这种情况一般比较少见,一般属于开源,并且要求比较高。还有一种是,控件把别人能够想到的,甚至没有想到的功能基本都实现了,我想很多控件都是这样的,这就要求控件的功能足够丰富。

 

使用的几款控件比对分析

C1Chart
官网地址:https://www.grapecity.com.cn/developer/componentone-wpf

文档:http://help.grapecity.com.cn/pages/viewpage.action?pageId=3871181

这是通过CPU进行数据点的渲染,效率一般。如果数据量太大,可以使用它的位图模式,在该模式下,波形显示的效率会得到很大改善,但是还是需要在控件之外做一些额外的并行处理操作,增加了程序的开发难度。

它的文档,我已无力吐槽,Chart简单的功能应用,是有简单的示例和说明文档。但是如果想做一些额外的创新和定制,这些文档显然没有半点用处,可能商业模式的选择不同造成的吧。不得不说,在试用期期间,要做demo来评估控件期间,这些文档可以不客气地说,写得很烂。

对于功能的丰富性,举个简单的例子。它的多Y轴功能显得有些单一,如果添加显示的波形比较多,而且每条波形需要对应一个Y轴,那么Y轴区间就会压缩Chart的波形显示空间。这种情况也可能我没找到相应的功能属性来进行设置,但也从一方面说明了资料文档写得真的烂。

 

LiveCharts
官网地址: https://lvcharts.net/

Simple, flexible, interactive & powerful data visualization for .Net LiveCharts is just data visualization but built and for everyone. 这是它官网的介绍和说明。

它是一个开源的项目,有两部分组成,控件的使用部分是免费的,数据采样算法是需要收费的。控件使用比较简单,也有充足的示例,并且文档资料写得不错,当然还有源码可以看。

对于效率,它是通过画布Canvas来进行绘制波形的,通过CPU运行和渲染,经过demo测试,在画布同时渲染2000个点较为流畅,再多就会有 所卡顿,当然这个数值跟PC的配置有关系。但是基于所有的控件,在同一PC来测试效率,也可以初略地评估各个控件渲染效率的高低。加入采样算法,根据官方 说法可以流畅地渲染30万(30,000)个点。我把官方的示例运行起来,在渲染的过程中,有少许卡顿,不过可以忽略。对于这个采样算法,由于时间有限, 我没有做实时数据显示的验证,所以不做过多叙述。总的来说,是一款不错的控件,界面相对也比较美观,可定制性也很高。但是对于效率要求较高的情 况,LiveCharts还是有些令人担忧。

 

DevExpress
DevExpress 对于这个控件,没有过多认识。只是下载了官网提供的示例,然后运行了它的实时显示的示例,对于CPU占用率比较高,在本机运行该示例进程CPU占用率高达40%。于是就没有继续了解下去,就果断放弃了选择。

 

LightningChart 图表控件
官网地址:http://arction.cn/

文档资料: http://arction.cn/resources

中文论坛:http://forum.jianshukeji.com/forum.php

LightningChart是目前为止,我所了解的多个wpf的Chart控件里,唯一使用GPU渲染的。渲染效率而言,秒杀一切wpf的Chart控件。所以即使它在渲染数十万个点,甚至上百万个点也依然很流畅。因为使用GPU渲染,所以CPU的占用相对也低。 在编写程序时,由于LightningChart的高效性,所以我在控件之外,不需要做太多额外的处理,极大地降低了程序的实现难度,同时也极大地提高了程序的实现速度。渲染效率的高效性很好地保证了实时数据的实时性。 它提供的文档中英文版本都有,小缺点可能就是文档不是最新的,但在试用期间提供免费中文技术支持服务(请通过中文论坛联系),为开发遇到疑问、语言转换节省了不少时间。 LightningChart的功能比较丰富,使用也比较简单,并且示例也很丰富,一般参考示例基本能够满足绝大多数功能的实现。

 

结论
综上所述,基于效率优先、易用性和丰富性的考虑,优先选择LightningChart,不得不再次说,它的效率秒杀一切WPF的chart控件。

 

因时间与篇幅长度原因,暂未一一写下去,感谢各位的阅读,希望能对各位的选择WPF chart 控件有所帮助。
————————————————
版权声明:本文为CSDN博主「简数科技」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_42125932/article/details/82350293

标签:控件,插件,示例,渲染,Chart,文档,效率
来源: https://www.cnblogs.com/Im-Victor/p/15048253.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有