在我的动画上撕毁WinForms C#

时间:2012-12-22 03:22:08

标签: c# winforms animation tearing

我正在使用一个库,使我能够动画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

1 个答案:

答案 0 :(得分:3)

我在很久以前使用过这种形式闪烁时控件出现问题,在我的情况下有很多控件,加载表单时控件会闪烁得很厉害。

最后我用了这个:

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;
            return cp;
        }
    }

将其粘贴到表单中。

它激活表单级别的双缓冲以及其中的所有控件。 然而,虽然它停止了我的闪烁问题,但它大大降低了表单元素似乎移动的速度,因为它们在100%准备就绪之前不会被绘制。

我想你可以尝试看看它是否适合你的情况。