我正在使用一个库,使我能够动画WinForm元素的动画(下面链接),当我使用它来移动透明面板穿过窗体(具有图片背景)时,会有非常多的撕裂。
我认为解决方法是让winforms以30fps的速度刷新而不会出现延迟。我尝试设置一个计时器,以每秒30次的速度This.Refresh();
,但它最终加载缓慢。那么我如何实现表单的良好刷新率呢?
上述链接在这里 - > http://code.google.com/p/dot-net-transitions/wiki/CodingWithTransitions#Creating_a_transition_that_works_on_a_single_property
这是一个撕裂的例子。它可能与面板的背景颜色设置为“透明”这一事实有关 http://screencast.com/t/XIr3NkGI
答案 0 :(得分:3)
我在很久以前使用过这种形式闪烁时控件出现问题,在我的情况下有很多控件,加载表单时控件会闪烁得很厉害。
最后我用了这个:
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.ExStyle |= 0x02000000;
return cp;
}
}
将其粘贴到表单中。
它激活表单级别的双缓冲以及其中的所有控件。 然而,虽然它停止了我的闪烁问题,但它大大降低了表单元素似乎移动的速度,因为它们在100%准备就绪之前不会被绘制。
我想你可以尝试看看它是否适合你的情况。