首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用C#/Windows窗体的简单动画

使用C#/Windows窗体的简单动画
EN

Stack Overflow用户
提问于 2008-10-09 17:39:11
回答 2查看 91.8K关注 0票数 61

我需要一个快速的动画在C#/Windows窗体的万圣节显示。只是一些二维的形状在一个坚实的背景上移动。由于这只是一个快速的一次性项目,所以真的不想为此安装和学习一整套新的工具。(DirectX开发工具包、Silverlight、Flash等)我还必须将它安装在多台计算机上,这样,除了基本的.Net框架(2.0)之外,任何事情都会很麻烦。

对于工具,我已经有了VS2k8,25年的开发经验,一辆手推车,大屠杀斗篷,以及大约2天的时间来摧毁它。自从在我的Atari130XE(页面翻转和播放器/导弹图形!)上使用汇编程序后,我就没有做过动画了!

建议?以下是我想知道的一些事情:

  • 我可以通过摆弄它的OnPaint处理程序来绘制任何空小部件(如面板),对吗?这就是我画一个自定义小部件的方法。有比这更好的技术吗?
  • 在Windows窗体中,这种东西有翻页技术吗?我不是在寻找一个高的帧速率,只是小闪烁/绘图的必要。

谢谢。

验尸编辑.“几天后的编码”

这个项目已经完成了。下面的链接很有用,尽管其中有几个是404。(我希望容许多于一项答覆标记为“正确”)。我必须克服的最大问题是闪烁,当我试图直接绘制表单时,它是一个持续的错误。

  • 对表单使用OnPaint事件:坏主意。我从来没有做到这一点;许多神秘的错误(堆栈溢出,或ArgumentNullExceptions)。最后,我用一块尺寸的面板填写了表格,效果很好。
  • 无论如何,使用OnPaint方法是缓慢的。在网上的某个地方,我读到了PaintEventArgs的建设是缓慢的,而且他们没有开玩笑。当我放弃这个的时候,很多闪烁的东西都消失了。跳过OnP珍珠/Invalidate(),只需自己绘制它。
  • 设置表单上的所有“双缓冲”选项仍然会留下一些必须修复的闪烁。(我发现有矛盾的文档,上面写着“将它们设置在控件上”和“将它们设置在表单上”。好的控件没有.SetStyle()方法。没有它们,我还没有进行测试,所以它们可能正在做一些事情(this是表单): this.SetStyle(ControlStyles.OptimizedDoubleBuffer,this.SetStyle(ControlStyles.UserPaint,true);

因此,代码的工作流看起来类似于(pf是面板控件):

代码语言:javascript
运行
复制
    void PaintPlayField()
    {
        Bitmap bufl = new Bitmap(pf.Width, pf.Height);
        using (Graphics g = Graphics.FromImage(bufl))
        {
            g.FillRectangle(Brushes.Black, new Rectangle(0, 0, pf.Width, pf.Height));
            DrawItems(g);
            DrawMoreItems(g);
            pf.CreateGraphics().DrawImageUnscaled(bufl, 0, 0);
        }
    }

我刚刚从计时器循环内部调用了PaintPlayField。一点也不闪烁。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-09 17:44:54

按您想要的帧速率启动一个定时器。在每个定时器触发时,根据您想要实现的动画运动,在屏幕上(您的模型)旋转形状的内部表示,然后调用Invalidate(true)。在OnPaint内部,只需在屏幕上绘制模型。

哦,是的,你可能想打开双缓冲(这就像自动翻页)。

票数 15
EN

Stack Overflow用户

发布于 2008-10-09 18:18:34

2d游戏底座

定时器动画

这两种方法都给出了动画的好例子。代码相当简单。当我需要为我儿子做一个快速动画时,我就用了这些。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/188349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档