Windows窗体,获取FPS?

时间:2011-07-18 19:10:36

标签: winforms frame-rate

我正在编写一个在地图上显示实时数据的Windows应用程序。有没有一种简单的方法来获得FPS(每秒帧数)?

谢谢,谷歌上找不到多少。这是C#,.NET 4.0。

2 个答案:

答案 0 :(得分:4)

计算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()以获取值。请注意,不应该对此方法进行并发调用,因为每次调用都会重置计数器和开始时间。

答案 1 :(得分:0)

你是如何绘制地图的?这一切都取决于您正在使用的技术......如果您正在进行图形密集型工作,我的建议将用于托管DirectX。

尝试在此处获取更多信息:http://www.programmersheaven.com/2/time-fps