gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 11:24:50 38 4
gpt4 key购买 nike

全部

我关注这个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();
}

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

谁能找出问题所在?我不认为这是一个错误。

最佳答案

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

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

关于c# - BufferedGraphics 在 Form 加载事件中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9746686/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com