当前位置:  开发笔记 > 编程语言 > 正文

WinForms中的简单动画

如何解决《WinForms中的简单动画》经验,为你挑选了2个好方法。

想象一下,你想要在WinForm上设置一些对象的动画.您设置计时器以更新状态或模型,并覆盖窗体的绘制事件.但是从那里开始,为动画不断重新绘制Form的最佳方法是什么?

完成绘图后立即使表单无效?

设置第二个计时器并定期使表单无效?

也许这个东西有一个共同的模式?

是否有任何有用的.NET类可以提供帮助?

每次我需要这样做时,我发现了一种带有新缺点的新方法.SO社区的经验和建议是什么?



1> 小智..:

我已经创建了一个可能有助于此的库.它叫做Transitions,可以在这里找到:http://code.google.com/p/dot-net-transitions/

它使用在后台线程上运行的计时器来为对象设置动画.该库是开源的,因此如果它对您有用,您可以查看代码以查看它正在做什么.



2> Peteter..:

在某些情况下,不使用paint事件绘制更快更方便,但是从控件/窗体中获取Graphics对象并在其上绘制"on".这可能会给不透明/抗锯齿/文本等带来一些麻烦,但是在不必重新绘制整个shabang方面可能是值得的.有点像:

private void AnimationTimer_Tick(object sender, EventArgs args)
{
    // First paint background, like Clear(Control.Background), or by
    // painting an image you have previously buffered that was the background.
    animationControl.CreateGraphics().DrawImage(0, 0, animationImages[animationTick++])); 
}

我自己在一些控件中使用它,并且当感兴趣的对象移动或需要移除时,缓冲图像以"清除"背景.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有