ナビゲーション中のフリッカリングのユーザーコントロールの解決
頻繁にユーザー制御ナビゲーションを備えたアプリケーションは、多くの場合、制御の更新中にちらつきが発生します。 ダブルバッファリングは一般的なアプローチですが、この問題を完全に解決するだけでは常に十分ではありません。このフリッカーの根本原因は、ユーザーコントロールの塗装プロセスにあります。 コントロールはその背景を描き、子供のコントロールがある場所にギャップを残します。 その後、各子供のコントロールはコンテンツをペイントし、これらのギャップを埋めます。これらのギャップの簡単な可視性(しばしば白または黒)は、ちらつき効果を生み出します。
この問題は、Windowsフォームのアーキテクチャが子供のコントロールのための個々のWindowsに依存していることに固有のものです。 最も効果的な解決策は、子供のコントロールを含むフォーム全体に二重バッファリングを有効にすることです。これは、フォームのプロパティを設定して
フラグを含めることによって達成されます。フリッカリングを最小限に抑えるためのさらなるパフォーマンスの改善は、次のことを行うことができます。
CreateParams
WS_EX_COMPOSITED
バックグラウンド画像に「タイル」レイアウトを使用して、パフォーマンスを向上させます。 画像のサイズを変更して、コントロールの寸法に正確に適合するか、UCの
メソッド内で正しいサイズの画像コピーを生成します。OnResize()
子どものコントロールの依存度の低減:Format32bppPArgb
UCのイベント内でコンテンツを直接描画することにより、子どものコントロール、特に以上がナビゲートするときにユーザーがフリッカーを制御するのはなぜですか、そしてどうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。