winforms - Windows 窗体,获取 FPS?

标签 winforms frame-rate

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

谢谢,在谷歌上找不到太多信息。这是 C#、.NET 4.0。

最佳答案

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

关于winforms - Windows 窗体,获取 FPS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6738034/

相关文章:

c# - 如何优雅地处理 winforms 应用程序中的休眠/ sleep 模式?

c# - 如何避免窗体上出现大量用户控件

c# - 用于启动和读取具有自定义扩展名的文件的 winform 应用程序

c# - Xna 4 Model Rotation with inertia 在变量更新时无法按预期工作

c++ - 如何制作基本的 FPS 计数器?

ios - 使用低分辨率使用 AVCaptureVideoDataOutput 将 120/240 fps 捕获到帧缓冲区

c# - 如何获取图像属性?

c# - 使用 ? : Operand on entity framework

Java 实现一个可运行的 FPS 系统

c++ - 使用 clocks_per_sec 计算过剩帧率太慢