代码之家  ›  专栏  ›  技术社区  ›  Botz3000 Amir Sheng

用于.NET的高性能UI框架

  •  1
  • Botz3000 Amir Sheng  · 技术社区  · 14 年前

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

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

    你知道有什么好的.NET UI框架(本地框架的包装器也可以)吗?你使用它们的经验是什么?谢谢!

    6 回复  |  直到 14 年前
        1
  •  4
  •   Dirk Vollmar    14 年前

    原型 看看是否真的有性能问题。

    如果纯粹基于假设,那么选择Windows窗体而不是WPF似乎是有问题的。

        2
  •  2
  •   zendar    14 年前

    假设每秒有1000个读数。你真的认为你应该每秒刷新1000次显示器吗?

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

    电影每秒显示24帧,任何比这更快的画面都与人眼无关。如果系统每秒显示更多更改,您能得到什么?人类不能做出那么快的反应。因此,如果你需要系统调整几次每秒,比你必须有一些自动系统。

    通常,您应该重新考虑希望通过UI实现的目标。

    大约12-13年前,当最先进的技术是奔腾II的时候,我就研究过控制水井(水泵和阀门)的系统。我们用delphi2和windowsnt实现了这个系统,它有很好的系统图形表示。性能有问题的部分是我们用来读取数据的串行接口。显示比那快多了。

        3
  •  1
  •   Dr. Andrew Burnett-Thompson    13 年前

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

    为了响应这种需求,我创建了一个名为 SciChart . SciChart致力于填补超高性能科学/股票图表的空白,作为其优化的一部分,它使用专有的重采样算法在绘制前减少数据集、即时模式渲染和大量其他优化,如对象池和资源重用。

    link 查看性能演示(还需要Silverlight 4-WPF版本)。该图表能够以交互帧速率(20-50FPS,取决于硬件)绘制总计5或6位数点数的多个序列。这相当于每秒约200万个数据点(每秒20帧时为100000个数据点)。一个完整版本的商业许可证将很快提供,可能在2012年1月底。

    为了响应您的特定需求,请注意WPF/SL渲染管道将仅以60FPS的最大速度渲染,这通常是监视器刷新率。在这种情况下,我建议将数据批处理并附加到CompositionTarget中的图表中。呈现事件将是最佳解决方案。SciChart支持批处理更新,通过其API在最后进行一次呈现,这与代码隐藏或MVVM兼容。结果是,您可以随心所欲地将数据推送到图表中,但它只能以WPF/SL能够呈现的速度呈现数据。超过30FPS几乎是人眼无法察觉的。

        4
  •  0
  •   Mischa Kroon    14 年前

    听起来WPF的额外精度将使它成为一个理想的候选人。

    有趣的是,当我输入这个的时候,旁边有一个广告,上面写着当你认真考虑性能的时候,Radcontrols for WPF,里面有一些阴谋。

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

        5
  •  0
  •   py2020    14 年前

    我认为.Net窗体应该可以工作,因为VB6UI可以。

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

        6
  •  0
  •   atamanroman    14 年前

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