BufferedGraphics在Form加载事件中不起作用?

时间:2012-03-17 02:17:18

标签: c# drawing

所有

我按照http://msdn.microsoft.com/en-us/library/ka0yazs1.aspx创建一个应用程序,并希望在C#WinForm中在背景上绘制一些内容。

BufferedGraphics在Form1_Load事件中启动。如果我将render方法放在鼠标单击事件中,它可以简单地清理这样的背景:

    BufferedGraphicsContext myContext;
    BufferedGraphics myBuffer;

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

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

任何人都可以找出问题所在吗?我不认为这是一个错误。

1 个答案:

答案 0 :(得分:2)

是的,那不行。在Load事件中窗口不可见,Shown事件是您可以确定可以看到渲染内容的第一个事件。

实际上并没有解决任何问题,当表单重新绘制自己时,你将丢失任何渲染内容。仅在Paint事件中绘制内容。在构造函数中将this.DoubleBuffered属性设置为true时,您将免费获得双缓冲图形缓冲区。