私はパネルをダブルバッファリングすることは基本的にすべての描画がバッファに行われたことを意味し、バッファは描画面に直接コピーされます。
ビットマップに描画してから、Graphics.DrawImage
を使用してそのビットマップをパネルに描画します。これにより、ビットマップが保存され、すべての描画操作をやり直さなくてもそのビットマップを更新できます。
これは、パネルのちらつきに関する限り、パネルのダブルバッファリングと同じですか? または、ダブルバッファリングしてすべての図面を再実行する必要がありますか?そうすれば、フリッカーが少なくなりますか?
編集: 私はDrawLine
で点をプロットしていますが、点は動的に生成され、プロットしたら点を保存しません。私がダブルバッファーを使用する場合は、私がプロットしたすべてのポイントを保存するためのメモリオーバーヘッドも発生します。フリッカーを最小限に抑えるために、すでにバッファマップを描画しているパネルでダブルバッファリングを実行する必要がありますか?
答えて
最適な解決策は、描画する内容、操作の回数、関与するピクセルの数、描画面の合計サイズに大きく左右されます。
一般的な例としては、一般的には、システムがダブルバッファリング制御のことを世話を聞かせすることが推奨されたストローク、ポイントの数百人からなる各時にユーザ杭ストローク描画プログラム..
です描く
したがって、Paint
イベントで再描画し、ちらつきをなくすために独自のバッファ付きビットマップ描画を実装しないでください。
ちらつきは消えますが、膨大な数の描画操作では、これは遅くなり、遅れが生じます。回避するために
あなたは両方の方法の最善を組み合わせることができ遅れる:彼らはあまりにも多くを得るまで
はグラフィックスを描画します。
N
の呼び出し後には、描画呼び出し(基本的にはピクセル数)と遅れに気付く前に数百から数万の描画呼び出しを行うことができるかどうかによってシステムの速度に依存します。その後キャッシュあなたが
Panel's BackgroundImage
として設定されたビットマップに描画することによって最初N
描画呼び出し。N+1
からのすべての図面は、Paint
イベントでパネルの表面に描画されます。あなたが2*N
に達したときには、キャッシュ画像の別のバージョンを作成2*N+1
で描画表面を始めるなど..
ダブルバッファの動作は少し異なります。バッファAを変更している間は、バッファBを使用して描画する必要があります。バッファBの修正を開始すると、Aから読み取られるはずです。
したがって、読み込み中のバッファを書き込まないようにすることです。したがって、外部バッファを使用してそれを描画バッファにコピーすることはダブルバッファと同じではないようです。実際には、読み出し中は外部バッファをコピーしてバッファを書き込むことができます。
- 1. Solrの格納フィールドのサイズを最小限に抑える必要がありますか?
- 2. メモリ使用量を最小限に抑えるために、Ponyの:sendmailまたは:smtpモードを選択する必要がありますか?
- 3. アプリケーションサイズを最小限に抑えるUnity
- 4. プログラムを最小限に抑えるためにwin32ウィンドウを停止する
- 5. 誤読/ミスタイプ/ミスピークを最小限に抑えるエンコーディングですか?
- 6. 他のアプリケーションを最小限に抑えるためのバッチファイル
- 7. TLBフラッシュを最小限に抑えるためにオペレーティングシステムがどれくらい難しいですか?
- 8. プログラムを最小限に抑えるように強制する
- 9. サーバーサイドのコーディングを最小限に抑えるように最適化されたWebスタックはありますか?
- 10. 私は次式で<code>H</code>を最小限に抑える必要があるOpenCVの
- 11. <canvas>でダブルバッファリングを実装する必要がありますか?
- 12. RDDの要素を最小限に抑える
- 13. バッチファイルを使ってSkypeを最小限に抑えるには?
- 14. 待ち時間を最小限に抑えるために、IISを使用してHTTP経由でマルチプレーヤーのゲームデータをトンネリングする方法はありますか?
- 15. 不確実性測定誤差を最小限に抑える
- 16. eclipseでJunit 5を実行するために必要な最小限の依存関係は何ですか?
- 17. 画面全体からフラグメントを最小限に抑えるにはどうすればいいですか?
- 18. Kindle Fire:画面の下部にある細い灰色のバーを最小限に抑えますか?
- 19. アプリケーションの実行中にExcelを最小限に抑える方法は?
- 20. 画面を回転させたりアプリケーションを最小限に抑えると、フラグメントがクラッシュする
- 21. バッファ使用量を最小限に抑えるために、css〜postcss uncssプラグインをストリーミングしますか?
- 22. データの損失/複製を最小限に抑えるためにFlinkシャットダウンフック
- 23. 同時性を最小限に抑えるには、どの分離モードを選択する必要がありますか?
- 24. テスト中の工場を最小限に抑えますか?
- 25. ADO.NET DataSetのメモリフットプリントを最小限に抑えますか?
- 26. アンドロイドでアプリケーション全体を最小限に抑える方法は?
- 27. DelphiでAndroidアプリを最小限に抑える方法は?
- 28. Goでガベージコレクションを最小限に抑える方法は?
- 29. ffmpegでライブストリーミングの遅延を最小限に抑える方法
- 30. iPadアプリケーションをプログラムで最小限に抑える方法は?
あなたがちらつく持っていますか? –
@ LasseV.Karlsenはい、私はいくつかのちらつきがあります – Priyank
はい、システムはあなたのコードよりよく知っています。ビットマップを再描画するか描画するかは、描画操作の数によって異なります。私はビットマップで1番目をキャッシュし、最後の100-500の操作を再描画するのが最良だとわかりました。 – TaW