2010-07-19 93 views
1

我有一個示例應用程序,它使用Control類的OnRender覆蓋的DrawContext實例繪製矩形,線條等。通過調用InvalidateVisual每隔10毫秒重新繪製該控件(我可以將源代碼發佈給任何感興趣的人)。我通過測量OnRender每次調用之間的時間來計算每秒幀數(FPS)。使用WPF的DrawingContext類每秒幀數

但是,這個數字對於FPS是不正確的。通過查看應用程序,我可以看到給出的FPS數字高於應用程序重新繪製每秒的次數。這是因爲「當您使用對象的繪圖命令時,實際上存儲了一組渲染指令(儘管確切的存儲機制取決於提供DrawingContext的對象的類型),稍後將由圖形系統使用;您沒有實時繪製到屏幕上。「

所以我想知道的是,如果有任何事件我可以訂閱,或以任何其他方式,以確定每秒多少次我的WPF應用程序/控件正在生成一個新的位圖並將其繪製到屏幕上?是否有任何我們可以訪問的「圖形系統」保存的位圖緩衝區?

非常感謝!

回答

2

你需要使用的是每幀調用的CompositionTarget.Rendering事件。

+0

非常感謝尼爾,正是我所期待的。 – 2010-07-19 12:51:41