C# 在WinC窗体上撕裂我的动画#

C# 在WinC窗体上撕裂我的动画#,c#,winforms,animation,tearing,C#,Winforms,Animation,Tearing,我正在使用一个库,它使我能够为WinForm元素的移动设置动画(链接如下),当我使用它在窗体上移动一个透明面板(有图片背景)时,会有非常多的撕裂 我相信解决办法是让winforms以每秒30帧的速度刷新,而不会出现延迟。我试着设置一个定时器来做这个.Refresh()每秒30次,但加载速度很慢。那么,我如何实现表单的良好刷新率呢 上述链接位于此处-> 这是一个撕裂的例子。这可能与面板的背景色设置为“透明”有关 很久以前,当我遇到表单上控件闪烁的问题时,我使用了这个方法,在我的情况下,有很多控件,

我正在使用一个库,它使我能够为WinForm元素的移动设置动画(链接如下),当我使用它在窗体上移动一个透明面板(有图片背景)时,会有非常多的撕裂

我相信解决办法是让winforms以每秒30帧的速度刷新,而不会出现延迟。我试着设置一个定时器来做
这个.Refresh()每秒30次,但加载速度很慢。那么,我如何实现表单的良好刷新率呢

上述链接位于此处->

这是一个撕裂的例子。这可能与面板的背景色设置为“透明”有关

很久以前,当我遇到表单上控件闪烁的问题时,我使用了这个方法,在我的情况下,有很多控件,加载表单时,控件会闪烁得很厉害

最后我用了这个:

    protected override CreateParams CreateParams
    {
        get
        {
            CreateParams cp = base.CreateParams;
            cp.ExStyle |= 0x02000000;
            return cp;
        }
    }
把它粘贴到你的表格里

它在表单级别和表单中的所有控件上激活双缓冲。 然而,虽然它停止了我的闪烁问题,但它大大降低了窗体元素似乎移动的速度,因为它们直到100%准备就绪才被绘制


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

请参阅“双缓冲”。撕裂的修复方法是不允许显示不完整的帧(例如,当它们被画成一半时)。我只是启用了双缓冲,但它似乎没有影响它。我没有在C#中使用绘图类,只是简单地为表单元素的位置设置动画。这是一个形式撕裂的例子。我认为这也是由于将面板设置为透明。Dibesjr,链接是brokenIt,它确实有一些速度问题,所以我决定不在屏幕之间移动一个大面板,只移动单独的控件,它看起来很好