2011-07-18 61 views
3

我正在寫一個Windows應用程序,它在地圖上顯示實時數據。有沒有簡單的方法來獲得FPS(幀每秒)?Windows窗體,獲取FPS?

謝謝,在google上找不到太多東西。這是C#,.NET 4.0。

+0

你用什麼類型的數據在地圖上顯示?你能否請進一步解釋一下。 –

+0

我通過第三方使用購買的映射控件。我們以每秒30次的速度在全國範圍內顯示實時功耗。 – dave2118

回答

3

計算FPS可能是這麼簡單的東西(如果精度不是到極點的重要性):

DateTime _lastCheckTime = DateTime.Now; 
long _frameCount = 0; 

// called whenever a map is updated 
void OnMapUpdated() 
{ 
    Interlocked.Increment(ref _frameCount); 
} 

// called every once in a while 
double GetFps() 
{ 
    double secondsElapsed = (DateTime.Now - _lastCheckTime).TotalSeconds; 
    long count = Interlocked.Exchange(ref _frameCount, 0); 
    double fps = count/secondsElapsed; 
    _lastCheckTime = DateTime.Now; 
    return fps; 
} 

設置的更新計時器調用GetFps()每第二要獲得價值。請注意,此方法不應該有併發呼叫,因爲每個呼叫都會重置計數器並啓動時間。

+0

謝謝!我不需要它具體,但某種基準。 – dave2118

+0

@ dave2118:這是一個相當快速和線程不安全的例子。如果不同的線程同時使用這些方法,則應該使用'Interlocked'類來確保線程安全(我已經更新了示例)。 – Groo

0

你是如何繪製你的地圖?這一切都取決於您使用的是什麼技術......如果您正在進行圖形密集型工作,我的推薦工作將用於託管DirectX。

試圖讓這裏更多的信息:http://www.programmersheaven.com/2/time-fps

+0

你的鏈接已經死亡。 – LarsTech