現在、アプリケーションを洗練してパフォーマンスを向上させようとしています。基本的に、これは高度な Graph クラスです。いくつかの線を描画し、それらを更新します。
いくつかの遅い点を修正した後、結果をベンチマークしたいと思いました。私の描画は ~65 FPS で止まっていました (これは完璧ですが、ベンチマークを行っています)。タイマー (1 ミリ秒に設定) でオブジェクトを無効化し、保護されたオーバーライド void OnPaint -"way" を使用して自分のものを再描画します。
その後、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++;
}
ありがとう
〜スティーブ