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