2012-03-17 29 views
2

すべてForm LoadイベントでBufferedGraphicsが機能しませんか?

私はこのhttp://msdn.microsoft.com/en-us/library/ka0yazs1.aspxに従ってアプリケーションを作成し、C#WinFormの背景に何かを描画したいと考えています。

BufferedGraphicsはForm1_Loadイベントで開始されます。私は、マウスのクリックイベントでrenderメソッドを置けば、それは単に、このような背景をクリーンアップすることができます

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(); 
     } 

BufferedGraphicsContext myContext; 
    BufferedGraphics myBuffer; 

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

私はそれが何かを描画しませんFormLoadイベントでrenderメソッドを置くとき誰が問題であるか把握できますか?私はバグだとは思わない。

答えて

2

はい、動作しません。このウィンドウはLoadイベントではまだ表示されていません。表示されたイベントは、レンダリングしたものを確認できる最初のイベントです。

どちらも実際には解決しないものの、フォームが再描画されたときにレンダリングしたものは失われます。ペイントイベントでは、物を描くだけです。コンストラクタでthis.DoubleBufferedプロパティをtrueに設定すると、ダブルバッファリングされたグラフィックスバッファが無料で取得されます。

+0

ありがとうございます。 –

関連する問題