2012-03-17 29 views
2

全部BufferedGraphics在表單加載事件中不起作用?

我按照這個http://msdn.microsoft.com/en-us/library/ka0yazs1.aspx來創建一個應用程序,並希望在C#WinForm的背景上繪製一些東西。

BufferedGraphics在Form1_Load事件中啓動。如果我把渲染方法鼠標點擊事件,它可以簡單地清理的背景是這樣的:

BufferedGraphicsContext myContext; 
    BufferedGraphics myBuffer; 

private void button1_Click(object sender, EventArgs e) 
      { 
       myBuffer.Graphics.FillRegion(Brushes.Black,new Region(this.ClientRectangle)); 
       myBuffer.Render(); 
      } 

當我把渲染方法FormLoad事件也不會畫什麼:

private void Form1_Load(object sender, EventArgs e) 
     { 
      myContext = BufferedGraphicsManager.Current; 
      myBuffer = myContext.Allocate(this.CreateGraphics(), new Rectangle(0, 0, this.Width,this.Height)); 
      myBuffer.Graphics.FillRegion(Brushes.Black,new Region(this.ClientRectangle)); 
      myBuffer.Render(); 
     } 

任何人都可以弄清楚是什麼問題?我不認爲這是一個錯誤。

回答

2

是的,這是行不通的。該窗口在Load事件中不可見,Shown事件是您可以確定可以看到您呈現內容的第一個事件。

哪個也沒有實際解決任何問題,當表單重新繪製時,你會失去任何你呈現的內容。只在Paint事件中繪製東西。當您在構造函數中將this.DoubleBuffered屬性設置爲true時,您將獲得免費的雙緩衝圖形緩衝區。

+0

感謝您的建議。 – 2012-03-17 02:55:35