2012-02-17 16 views
2

ダブルバッファリングされたかなり複雑なユーザー描画コントロールがあります。別のウィンドウが上に移動した場合を除き、非常にうまく動作します。これにより、リフレッシュされていないコントロールに穴ができます。正しく再描画されません。私はいつもの修正をすべて試しました...ダブルバッファリングされたユーザーコントロールのリフレッシュの問題

SetStyle(ControlStyles.UserPaint, true); 
    SetStyle(ControlStyles.AllPaintingInWmPaint, true); 
    SetStyle(ControlStyles.DoubleBuffer, true); 

助けてください。私は窓の中にタイマーコントロールを置き、10ミリ秒ごとにリフレッシュするように設定しました。これは非常にクールジーです。

ダブルバッファリングをオフにすると、コントロールが正しくリフレッシュされますが、そうでなければちらつきのために乱れます。

編集:ユーザーコントロールに子ウィンドウはありません。グラフィックスメソッドを使用して、ユーザーコントロールの全面がペイントイベントに描画されます。 WS_EX_COMPOSITEDを使用すると、問題に対するドラッグが修正されましたが、終了時に空白領域を残す余分な問題が残ります。これまでの唯一の修正は、リフレッシュタイマーであり、誰かがより多くのWindowsの魔法を知っていることを望んでいます。

答えて

2

あなたがWinformsの中に描画の限界に近づいているようにここに掲載この質問への一番上の答えを見てみましょう:)聞こえる:How to fix the flickering in User controls

+0

WS_EX_COMPOSITED重なるウィンドウで再描画を修正するようです。塗装ボイド領域を引き起こすツールチップにはまだ問題があります。しかし、私はこの時点で何かを修正することは非常にうれしいです。 –

関連する問題