0
我有一個窗體顯示幾個圖形,併爲了改善圖形渲染時的視覺體驗我已使用this piece of code啓用雙緩衝。Winforms雙緩衝關閉後最小化形式
當我執行應用程序時沒有最小化/最大化窗體,雙緩衝工程很好,但如果我碰巧最小化窗體並再次最大化,現在雙緩衝不再工作,圖形重新繪製可見閃爍。
那麼有沒有辦法打開雙緩衝每次形式得到最小化/最大化?
我有一個窗體顯示幾個圖形,併爲了改善圖形渲染時的視覺體驗我已使用this piece of code啓用雙緩衝。Winforms雙緩衝關閉後最小化形式
當我執行應用程序時沒有最小化/最大化窗體,雙緩衝工程很好,但如果我碰巧最小化窗體並再次最大化,現在雙緩衝不再工作,圖形重新繪製可見閃爍。
那麼有沒有辦法打開雙緩衝每次形式得到最小化/最大化?
試試這個代碼
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;
此代碼僅控制形式的'WindowState'財產,但不這樣做的雙緩衝相關的任何東西。在哪裏以及如何在代碼中調用'protected protected CreateParams CreateParams'方法? – codeaviator
如果您詢問如何調用'protected override CreateParams CreateParams',您的問題是錯誤的。 CreateParams屬性只能在表單創建時一次訪問。 要重載'CreateParams',打開你的表單的源代碼並鍵入[this code](http://stackoverflow.com/questions/3718380/winforms-double-buffering/3718648#3718648) 或者你可以替換'/ *在這裏* /'調用SetStyle()到'SetStyle(ControlStyles.AllPaintingInWmPaint | ControlStyles.UserPaint | ControlStyles.DoubleBuffer,true);' – SlaneR
希望對你有所幫助 – SlaneR