我正在创建一个简单的程序,它有一个启动画面,显示3秒钟,在启动画面后,我的主表单加载。然而,当我的主表单加载时,它将在加载我的所有控件的过程中(我的页面上有36个按钮...将它们用于轮盘赌桌)。因此,在我的主要表单的前1-2秒显示,它正在加载所有这些按钮,看起来有点难看。如何在启动画面或其他任何方式的3秒钟内加载此表单?感谢
for (i = 0; i < 36; i++)
{ int j, k; j = i % 3; k = i / 3;
button[i] = new Label();
button[i].Location = new Point(80 + (41*j), 64 + (20*k));
button[i].Cursor = Cursors.Hand;
etc etc.
}
答案 0 :(得分:3)
它没有加载它们,你看到只需要绘制按钮所需的时间。您可以轻松地仔细检查:最小化表单并恢复它。这需要2秒钟,而不是高端,也许它只是感觉那样,或者你的硬件功能非常不足。有36个按钮确实让你能够观察到绘画,特别是当他们有一个图像时。确保放在按钮上的图像尺寸合适,不得不重新调整它们以适应按钮的价格昂贵并且会占用绘画时间。
除非您在启用了Aero的Vista或Win7上运行此屏幕,否则启动屏幕无法解决此问题。您可以使用Opacity属性稍微隐藏它,使用计时器从0增加到0.99。一个真正的解决方法是不使用按钮,而只是在窗体的OnPaint()方法覆盖中绘制轮盘赌桌。但是,您必须添加代码才能进行鼠标命中测试。
Q&amp; D修复是对整个表单进行双重缓冲,渲染为离屏位图,然后将结果显示在屏幕上。这并没有加速这幅画,它只是不再引人注目。将此代码粘贴到表单类中,以便在Windows XP及更高版本中使用内置支持:
protected override CreateParams CreateParams {
get {
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
return cp;
}
}