C# にカスタム コントロールがあります。空の関数がある場合でも、呼び出しRefresh
が思ったよりもずっと遅い (約 0.1ms) ことに気付きました。RePaint
基本的に、私のアプリケーションはグリッドを処理し、各グリッド セルを 1 つずつ更新します。このかなり非効率的な動作は設計によるものです。有効にすると、処理の各ステップが何を行ったかを実際に確認できるようになり、各ステップは 1 つのセルのみを変更することになります。ダブルバッファリングを切り替えても、大きな違いはありません。
誰でもアドバイスを提供できますか?
現在、私が思いついた最善の改善は、 への呼び出しを へRefresh
の呼び出しに置き換えることRefresh2
です。後者の関数は の正確なコピーですがRepaint
、先頭に追加された 2 行が にGraphics g = Graphics.FromHwnd(this.Handle); g.Clear(BackColor);
置き換えe.Graphics
られていg
ます。これにはいくつかの欠点があるのではないかと疑っていますが、描画速度が半分になります。私が使用しているコントロールにはサブコンポーネントがないことに注意してください。そのため、検証などはそれほど重要ではありません。