如何:使用表單和控制項的雙重緩衝以減少圖形重繪閃動
雙重緩衝會使用記憶體緩衝區來解決多個與繪製作業建立關聯的閃爍問題。 啟用雙重緩衝時,會將所有繪製作業都轉譯到記憶體緩衝區,而不是螢幕上的繪圖介面。 在所有繪製作業都完成之後,會直接將記憶體緩衝區複製到與其建立關聯的繪圖介面。 由於螢幕上只會執行一個圖形作業,因此會消除與複雜繪製作業相關聯的影像閃爍。對於大部分的應用程式,.NET Framework 所提供的預設雙精度緩衝將會提供最佳結果。 標準 Windows Forms 控制項預設會進行雙重緩衝處理。 您可以透過兩種方式,在表單中啟用預設的雙重緩衝處理和撰寫的控制項。 您可以將 屬性設定 DoubleBuffered 為 ,也可以呼叫 SetStyle 方法, OptimizedDoubleBuffer 將旗標設定為 true
true
。 這兩種方法都會為您的表單或控制項啟用預設的雙重緩衝,並提供無閃爍的圖形轉譯。 SetStyle只有在您已撰寫所有轉譯程式碼的自訂控制項時,才建議呼叫 方法。
針對更進階的雙重緩衝案例,例如動畫或進階記憶體管理,您可以實作自己的雙緩衝邏輯。 如需詳細資訊,請參閱 如何:手動管理緩衝圖形 。
減少閃爍
將 DoubleBuffered 屬性設為
true
。DoubleBuffered = true;
DoubleBuffered = True
- 或 -
SetStyle呼叫 方法,將 旗標設定 OptimizedDoubleBuffer 為
true
。SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
SetStyle(ControlStyles.OptimizedDoubleBuffer, True)
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應