winform 雙緩衝技術解決閃碩
專案中,控制元件在大小變化時會有閃爍現象。
以雙緩衝技術解決。
this.SetStyle(ControlStyles.OptimizedDoubleBuffer
| ControlStyles.ResizeRedraw
| ControlStyles.Selectable
| ControlStyles.AllPaintingInWmPaint
| ControlStyles.UserPaint
| ControlStyles.SupportsTransparentBackColor,
true);
或:
this.SetStyle(ControlStyles.UserPaint, true);//自繪
this.SetStyle(ControlStyles.DoubleBuffer, true);// 雙緩衝
this.SetStyle(ControlStyles.ResizeRedraw, true);//調整大小時重繪
this.SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
this.SetStyle(ControlStyles.OptimizedDoubleBuffer, true);// 雙緩衝
this.SetStyle(ControlStyles.SupportsTransparentBackColor, true); //透明效果
成員名稱 | 說明 |
---|
UserPaint | 如果為 true,控制元件將自行繪製,而不是通過作業系統來繪製。如果為 false,將不會引發 Paint事件。此樣式僅適用於派生自 Control 的類。 |
Opaque | 如果為 true,則控制元件被繪製為不透明的,不繪製背景。 |
ResizeRedraw | 如果為 true,則在調整控制元件大小時重繪控制元件。 |
FixedWidth | 如果為 true,則自動縮放時,控制元件具有固定寬度。例如,如果佈局操作試圖重新縮放控制元件以適應新的 Font,則控制元件的 Width 將保持不變。 |
FixedHeight |
如果為 true,則自動縮放時,控制元件具有固定高度。例如,如果佈局操作試圖重新縮放控制元件以適應新的 Font,則控制元件的 Height 將保持不變。 |
StandardClick | 如果為 true,則控制元件將實現標準 Click 行為。 |
Selectable | 如果為 true,則控制元件可以接收焦點。 |
UserMouse | 如果為 true,則控制元件完成自己的滑鼠處理,因而滑鼠事件不由作業系統處理。 |
SupportsTransparentBackColor | 如果為 true,控制元件接受 alpha 元件小於 255 的 BackColor 以模擬透明。僅在 UserPaint 位設定為 true 並且父控制元件派生自 Control 時才模擬透明。 |
StandardDoubleClick | 如果為 true,則控制元件將實現標準 DoubleClick 行為。如果 StandardClick 位未設定為true,則忽略此樣式。 |
AllPaintingInWmPaint | 如果為 true,控制元件將忽略 WM_ERASEBKGND 視窗訊息以減少閃爍。僅當 UserPaint 位設定為 true 時,才應當應用該樣式。 |
CacheText | 如果為 true,控制元件保留文字的副本,而不是在每次需要時從 Handle 獲取文字副本。此樣式預設為 false。此行為提高了效能,但使保持文字同步變得困難。 |
EnableNotifyMessage | 如果為 true,則為傳送到控制元件的 WndProc 的每條訊息呼叫 OnNotifyMessage 方法。此樣式預設為 false。EnableNotifyMessage 在部分可信的情況下不工作。 |
DoubleBuffer | 如果為 true,則繪製在緩衝區中進行,完成後將結果輸出到螢幕上。雙重緩衝區可防止由控制元件重繪引起的閃爍。如果將 DoubleBuffer 設定為 true,則還應當將 UserPaint 和AllPaintingInWmPaint 設定為 true。 |
OptimizedDoubleBuffer | 如果為 true,則該控制元件首先在緩衝區中繪製,而不是直接繪製到螢幕上,這樣可以減少閃爍。如果將此屬性設定為 true,則還應當將 AllPaintingInWmPaint 設定為 true。 |
UseTextForAccessibility | 指定該控制元件的 Text 屬性的值,如果已設定,則可確定該控制元件的預設 Active Accessibility 名稱和快捷鍵。 |