繁体   English   中英

NET的高性能UI框架

[英]High-Performance UI Framework for .NET

我当前的任务是开发用于测量和测试目的的软件,该软件将与各种设备通信。 因为我必须假设将从设备传输的大量数据需要显示在某些绘图组件或类似组件中,所以使用的UI框架应尽可能快且响应迅速。

我在WPF方面有几年的经验,但是我认为这并不是性能方面的最佳选择。 我目前正在考虑使用Windows窗体,但是我想先探讨一些选项。

您是否知道任何适用于.NET的UI框架(也可以使用本机框架的包装器),使用它们的经验如何? 谢谢!

构建原型以查看是否确实存在性能问题。

如果仅基于假设,则在WPF上选择Windows窗体似乎有问题。

因此,假设您每秒有1.000个读数。 您是否真的认为应该每秒刷新显示1000次?

这样的显示将毫无意义。 屏幕上会有太多的闪烁。 如果显示文本数据-它将滚动太快或闪烁,无法读取。

电影每秒显示24帧,这一切都比人眼无关。 如果系统每秒显示更多更改,您将获得什么? 人类无法快速做出反应。 因此,如果您每秒需要进行几次系统调整,则必须拥有一些自动系统。

通常,您应该重新考虑要通过UI完成的目标。
在Google中搜索“仪表盘设计”。

大约12到13年前,我开发了一种控制水井(水泵和阀门)的系统,当时最先进的设备是奔腾II。 我们是用Delphi 2和Windows NT来完成的,它具有很好的系统图形表示。 性能有问题的部分是我们用于读取数据的串行接口。 显示比这快得多。

一个普遍的问题是,许多业务图表无法按科学或金融应用程序的要求进行缩放以呈现海量数据集。 这在WPF和Silverlight等保留模式渲染引擎中尤其明显,当您需要快速更新屏幕时,它们可能会非常慢,尽管这适用于大多数GUI技术。

为了满足这种需求,我创建了一个名为SciChart的高性能WPF / SL图表组件。 SciChart试图填补超高性能科学/股票图表的空白,作为其优化的一部分,它使用专有的重采样算法在绘制,立即模式渲染和其他许多优化(例如对象池和资源重用)之前减少数据集。

请单击SciChart 链接以查看性能演示(还需要Silverlight 4-WPF版本)。 该图能够以交互式帧速率(20-50FPS,取决于硬件)绘制多个系列,总计5或6位数字。 这相当于每秒约200万个数据点(20FPS时为100,000个数据点)。 即将提供完整版本的商业许可,可能在2012年1月结束。

为了响应您的特定要求,请注意WPF / SL渲染管道将仅以最大60FPS的速度渲染,这通常是监视器的刷新率。 我建议在这种情况下,批处理数据并将其追加到CompositionTarget.Rendering事件中的图表将是最佳解决方案。 SciChart通过其API支持批量更新,最后通过一个渲染与一个后台代码或MVVM兼容。 结果是,您可以将数据以最快的速度推送到图表,但仅以WPF / SL能够呈现的速度呈现。 超过30FPS几乎是人眼无法检测到的。

您可能还需要考虑的另一个问题是内存占用量,CPU以及速度。 在评估图表组件时,我会谨慎选择,因为WPF / SL可能会成为主要的内存消耗!

听起来WPF的超高精确度使其成为理想的选择。

在键入此内容时很有趣,在我旁边输入的是一个广告,当您认真地考虑性能时,上面写着说Radcontrols for WPF,其中有一些绘图。

可能是您想要的:)

还要记住,WPF在4.0版本中获得了相当大的性能提升。

我认为.Net形式应该可以工作,因为VB6 UI可以。

我开发了类似的应用程序,可在屏幕上绘制线形图,但它在VB6中,并且同时将数据记录在txt文件中。 每秒读取700次以上(模拟到数字信号转换)。

您可能需要通过编码(不使用第三方控件)来绘制数据,这是另一种选择。

希望这会给您一些想法。

您可以使用XNA或其他一些3D api绘制图形,但这可能会过大。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM