2
我有一個小圖形程序,它使用ConfigureNotify事件來檢測窗口大小調整和重繪應用程序。但是,拖動窗口進行調整大小時,調整大小事件的速度似乎有點緩慢,這會導致重繪出現問題。有沒有辦法配置這個事件率?除此之外,是否有辦法檢測調整大小的開始/結束,以便我可以推遲重繪直到達到最終大小?有沒有辦法在X11中更改ConfigureNotify事件頻率?
我有一個小圖形程序,它使用ConfigureNotify事件來檢測窗口大小調整和重繪應用程序。但是,拖動窗口進行調整大小時,調整大小事件的速度似乎有點緩慢,這會導致重繪出現問題。有沒有辦法配置這個事件率?除此之外,是否有辦法檢測調整大小的開始/結束,以便我可以推遲重繪直到達到最終大小?有沒有辦法在X11中更改ConfigureNotify事件頻率?
不,不可能配置事件速率;他們只是在X服務器認爲合適時才進來。然而,部分急動可能正是因爲你在更改窗口後立即更新了一個調整大小事件(我希望你不要這樣做裏面的事件處理程序......)原因是你立即保持X服務器忙用你的繪畫,給它一點時間發回事件。
我對這種行爲的標準解決方案是:在調整大小時,使用計時器定期重新繪製(比如說,每200毫秒左右)。在繪製例程開始時使用寬度和高度(請記住,您可以在繪畫時接收調整大小事件!)。如果自上次計時器事件以來寬度/高度沒有發生變化,請停止計時器。
我建議使用Xt工具包來實現定時器和其他回調;它比純粹的Xlib調用要容易得多。