基于MFC的动画图形实现对话框

Posted

技术标签:

【中文标题】基于MFC的动画图形实现对话框【英文标题】:Animated graphics implementation dialog based MFC 【发布时间】:2011-08-12 08:39:39 【问题描述】:

谁能建议我在我的基于对话框的 mfc 程序中实现动画的特殊方法?我打算添加的动画就像一个建筑挖掘机图形,它会读取机器参数的值并相应地改变图形的形状。大部分信息都是根据参数从文本文件中读取的,所以我只需要能够让动画正常工作。

提前感谢您的帮助。

【问题讨论】:

这取决于您希望获得的大小和帧速率。 8 FPS 的 64x64 动画与 60 FPS 的 800x600 动画不同。 我不介意任何 fps 的 400x480 图像。但这对我要绘制的内容有何影响?每次图形需要更改时,我都会使用 Invalidate() 来刷新 OnPaint() 函数。 【参考方案1】:

好吧,GDI 很简单,但很丑而且很慢,GDI+ 也很简单,但更好,虽然通常更慢。 OpenGL 或 DirectX 快得多,但很难编程。也可以使用其他库,例如 cairo。

我建议从最简单的(可能是 GDI+)开始,看看它是否足够快。

这样做,只需在计时器中(或当您接收新数据时)使您正在绘制的控件无效(),然后在 OnPaint() 函数中绘制整个图形。一个基本的改进是仅对新数据影响图片的区域进行 Invalidate()。

如果您发现您的代码不够快,请回来询问如何改进它。一个具体的例子会更容易得到更有用的答案。

【讨论】:

我不知道慢。动画听起来并不那么压倒性。 GDI 和 GDI+ 可能会足够快(除非你严重误用 GDI)。 我会尝试实现它。希望它有效。如果我卡在某个地方,我会在论坛上提问。不过谢谢你的建议。干杯。 技术更快不是那么线性;这很大程度上取决于显卡。【参考方案2】:

有很多文章。其中大部分基于在设备上下文中绘制

    http://www.codeproject.com/KB/GDI/flickerfree.aspx

    http://www.codeguru.com/cpp/g-m/bitmap/article.php/c4879

    http://www.codersource.net/mfc/mfc-gdi-plus/animation-control-mfc.aspx

【讨论】:

我已经研究过这些。他们没有我需要的东西。猜猜我需要用位置绘图手动完成所有事情。

以上是关于基于MFC的动画图形实现对话框的主要内容,如果未能解决你的问题,请参考以下文章

使用MFC编制基于对话框的Windows应用程序,实现画图功能

怎么在基于对话框的MFC程序中实现多线程?

怎么在基于对话框的MFC程序中实现多线程?

VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)

如何将我的程序插入 MFC 对话框?

(转载)VS2010/MFC编程入门之五十一(图形图像:GDI对象之画刷CBrush)