私は気づいた resize flicker
私が設定するとはるかに良くなります TPanel.FullRepaint
に False
。プロパティが存在しているので True
デフォルトでは、それには何らかの理由があるはずです。
設定するかどうかを決定する方法は?
助けはただ述べています:
FullRepaintは、パネルがどのように反応するかを制御します。サイズ変更されます。 FullRepaintがtrueの場合、サイズが変更されると面取りされた境界線を含むパネル全体が再描画されます。 FullRepaintがfalseの場合、ベベルを付けた境界線の内側の領域のみが再描画されます。
http://docwiki.embarcadero.com/Libraries/XE3/en/Vcl.ExtCtrls.TPanel.FullRepaint
そのテキストはそれが何をするのかを述べていますが、なぜではありません...
回答:
回答№1は4不足しているFullrepaintの効果を表示することができ、あなたはそれが必要かどうかを判断する必要があります。
- パネルをフォームに配置し、アンカーを全方向に設定する
- PaintCaptionをfalseに設定するか、空のキャプションを使用します
- フォーム上に別のパネルを配置します。 フォーム、最初のパネルの一部は2番目のパネルで覆われます。
プログラムを実行してフォームのサイズを変更すると、最初のパネルの枠線が更新されない場合があります。
これはWMWindowPosChangedでは(FullRepaintまたは(ShowCaption and(Caption <> ""))の場合は無効化が呼び出され、それ以外の場合は右または下の境界線のみを含む四角形のInvalidateRect(Handle、Rect、True)のみが無効化されます。 (訂正のためのSertac Akyuzに感謝します)
前述したように、無効化を回避することでちらつきが軽減され、多くの場合、完全な無効化の必要性が与えられないため、ユーザーは自分で続行方法を決定できます。
めったに使用されないパネル、Fullrepaintなし
回答№2の場合は0
以前のバージョンのWindowsでは(正確にはどのバージョンになるかわからない) FullRepaint
フォームのサイズが変更されたときに、パネルの境界線上でのグラフィカルなアーチファクトを防ぐために必要でした。 私の知る限りでは、これは少なくともWindows XP以降の問題ではありません。