2015-06-29 35 views
0

我有一個窗體顯示幾個圖形,併爲了改善圖形渲染時的視覺體驗我已使用this piece of code啓用雙緩衝。Winforms雙緩衝關閉後最小化形式

當我執行應用程序時沒有最小化/最大化窗體,雙緩衝工程很好,但如果我碰巧最小化窗體並再次最大化,現在雙緩衝不再工作,圖形重新繪製可見閃爍。

那麼有沒有辦法打開雙緩衝每次形式得到最小化/最大化?

回答

0

試試這個代碼

bool hasMinimized; 
void SizeChangedCallback(object sender, EventArgs e) { 
    if (WindowState == FormWindowState.Minimized) { 
     hasMinimized = true; 
    } else { 
     if (hasMinimized) { 
      hasMinimized = false; 
      /* Call SetStyle() in here */ 
     } 
    } 
} 

你必須窗體的SizeChanged事件鏈接到SizeChangedCallback
這樣的:

this.SizeChanged += SizeChangedCallback; 
+0

此代碼僅控制形式的'WindowState'財產,但不這樣做的雙緩衝相關的任何東西。在哪裏以及如何在代碼中調用'protected protected CreateParams CreateParams'方法? – codeaviator

+0

如果您詢問如何調用'protected override CreateParams CreateParams',您的問題是錯誤的。 CreateParams屬性只能在表單創建時一次訪問。 要重載'CreateParams',打開你的表單的源代碼並鍵入[this code](http://stackoverflow.com/questions/3718380/winforms-double-buffering/37186​​48#37186​​48) 或者你可以替換'/ *在這裏* /'調用SetStyle()到'SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer,true);' – SlaneR

+0

希望對你有所幫助 – SlaneR