2012-02-17 72 views
2

我有一個相當複雜的雙緩衝用戶繪製控件。工作得很好,除非另一個窗口移動到其上。這會導致控件中尚未刷新的空洞。它沒有正確重繪自己。我已經嘗試了所有常用修復程序...雙緩衝用戶控件刷新問題

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

沒有幫助。作爲一個混搭,我在窗口中放置了一個Timer控件,並將其設置爲每10毫秒刷新一次。這看起來非常狡猾。

如果我關閉雙緩衝控制刷新正確,但由於閃爍否則混亂。

編輯:用戶控件中沒有子窗口。用戶控件的整個表面都使用圖形方法在繪畫事件中繪製。使用WS_EX_COMPOSITED可以解決拖拽問題,但當關閉時留下空區域的問題仍然存在。到目前爲止唯一的解決辦法是刷新計時器,我希望有人知道更多的Windows魔術。

回答

2

這聽起來像你逼近的WinForms繪製的限制:)看一看上面這個問題的答案貼在這裏:How to fix the flickering in User controls

+0

WS_EX_COMPOSITED似乎與上覆窗固定重繪。導致繪畫空白區域的工具提示仍然存在問題。但我很樂意在這一點上解決任何問題。 – 2012-02-18 00:29:44