C#中當窗體上圖檔較多,在窗體上繪圖閃爍的厲害時經常會使用
this.DoubleBuffered = true;
可以有效防止閃爍,但是對于圖形,如果使用者想打開最小化窗體時,程式會觸發Paint事件,如下面的代碼所示,程式員本意是想重繪所有圖形,而此時,雖然執行了ReDrawAllGraphics()方法,但在窗體上依然無法看到重繪結果,除非拖動窗體或改變窗體大小。
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
//重繪所有圖形
ReDrawAllGraphics();
}
問題就出在開啟了雙緩存功能,此時将this.DoubleBuffered改為 false即可。