簡體   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