我目前正在尝试完善我的应用程序并提高其性能。基本上,它是一个高级图形类。它画了几条线并刷新它们。
在修复了一些慢点之后,我想对我的结果进行基准测试。我的绘图卡在〜65 FPS(这是完美的,但我正在做基准测试)。我在计时器中使我的对象无效(设置为 1 毫秒)并使用受保护的覆盖 void OnPaint -“方式”重绘我的东西。
之后,我将 Invalidate() 放入受保护的覆盖 void OnPaint。之后FPS设置为几千。但是使用该方法会导致屏幕为空。
我的问题是:这个问题是故意的吗?这是有道理的,因为任何高于屏幕刷新率的东西都是浪费电力。但我想为我的基准测试禁用那个“锁”。
示例代码:
//Timer to refresh
private void timer1_Tick(object sender, EventArgs e)
{
Invalidate();
}
private DateTime date = DateTime.UtcNow;
private long times = 0;
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//Drawing
e.Graphics.DrawLine(new Pen(Brushes.Black), 50, 50, Width - 100, Height - 100);
//Required to tell me the framerate
if ((DateTime.UtcNow - date).Seconds > 1)
{
date = DateTime.UtcNow;
Debug.WriteLine(times);
times = 0;
}
times++;
}
谢谢
〜史蒂夫