【发布时间】:2009-08-19 06:52:03
【问题描述】:
当我将非矩形区域应用于 Windows 窗体(比如说椭圆)时,我遇到了一种奇怪的行为。问题是最初调整大小时,表单似乎消失了一会儿(好像该区域是空的)。它看起来像轻微的闪烁,而表单后面的桌面内容在几分之一秒内变得可见。第一次调整大小后,此闪烁不再可见。
这可以通过简单地创建一个 Windows 窗体项目并通过使用窗体的大小作为椭圆的边界矩形将椭圆区域应用到窗体来重现(通过这种方式,您将能够调整窗体的大小,因此它的边界不会被区域完全“吃掉”)。
注意:我正在 OnResize 事件中更新 Form 的区域。
我使用的代码如下所示:
protected override void OnResize(EventArgs e)
{
base.OnResize(e);
GraphicsPath path = new GraphicsPath();
path.AddEllipse(new Rectangle(Point.Empty, this.Size));
this.Region = new Region(path);
}
任何想法可能导致这种情况?
快速跟进:
我注意到,当我将相同的代码 sn-p 放入 OnSizeChanged 事件时,闪烁消失或似乎很少发生。
谢谢!
【问题讨论】: