1

現在、アプリケーションを洗練してパフォーマンスを向上させようとしています。基本的に、これは高度な 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++;
    }

ありがとう

〜スティーブ

4

1 に答える 1