BufferedGraphics没有';不能在Form load事件中工作
本文关键字:load Form 事件 工作 不能 没有 BufferedGraphics | 更新日期: 2023-09-27 18:28:01
所有
我遵循这个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();
}
有人能找出问题出在哪里吗?我不认为这是个bug。
是的,那不起作用。该窗口在"加载"事件中还不可见,"显示"事件是第一个可以确保看到渲染内容的事件。
这实际上也不能解决任何问题,当窗体重新绘制自身时,您将丢失所渲染的内容。仅在"绘制"事件中绘制内容。当你设置这个时,你会得到免费的双缓冲图形缓冲区。在构造函数中将DoubleBuffered属性设置为true。