天天看點

使用OnPaint函數來重繪在打開最小化窗體時依然無法看到重繪圖形的解決辦法

C#中當窗體上圖檔較多,在窗體上繪圖閃爍的厲害時經常會使用

 this.DoubleBuffered = true;

可以有效防止閃爍,但是對于圖形,如果使用者想打開最小化窗體時,程式會觸發Paint事件,如下面的代碼所示,程式員本意是想重繪所有圖形,而此時,雖然執行了ReDrawAllGraphics()方法,但在窗體上依然無法看到重繪結果,除非拖動窗體或改變窗體大小。

  protected override void OnPaint(PaintEventArgs e)

        {

            base.OnPaint(e);

             //重繪所有圖形

            ReDrawAllGraphics();

     }

問題就出在開啟了雙緩存功能,此時将this.DoubleBuffered改為 false即可。