2

ConfigureNotifyイベントを使用してウィンドウのサイズ変更を検出し、アプリケーションを再描画する小さなグラフィカルプログラムがあります。ただし、ウィンドウをドラッグしてサイズを変更すると、サイズ変更イベントの発生がやや遅くなり、再描画がぎくしゃくします。このイベントレートを設定する方法はありますか?それを除いて、サイズ変更の開始/終了を検出して、最終的なサイズに達するまで再描画を延期できるようにする方法はありますか?

4

1 に答える 1

2

いいえ、イベントレートを設定することはできません。Xサーバーが適切であると判断したときにそれらが入ります。ただし、サイズ変更イベントの直後にウィンドウを更新していることが原因である可能性があります(イベントハンドラー内で更新しないでください...)理由は、Xサーバーをすぐにビジー状態に保つためです。絵を描いて、イベントを送り返す時間がほとんどありません。

この種の動作に対する私の標準的な解決策は、サイズ変更中に、タイマーを使用して定期的に(たとえば、200ミリ秒ごとに)再描画することです。ペイントルーチンの開始時に幅と高さをそのまま使用します(ペイント中にサイズ変更イベントを受け取る可能性があることに注意してください)。前回のタイマーイベント以降、幅/高さに変化がない場合は、タイマーを停止します。

Xtツールキットを使用してタイマーやその他のコールバックを実装することをお勧めします。裸のXlib呼び出しよりもはるかに使いやすいです。

于 2013-01-04T17:04:37.963 に答える