如何在dc上显示.gif(带动画)

时间:2010-06-01 09:57:54

标签: wxpython

在我的应用程序中,我有一个与wxWindowDC和wxMemoryDC关联的面板。 我必须在bg颜色的bg颜色上绘制各种东西,在bg颜色bg图像的顶部和顶部的bg图像上我必须绘制一些文本等。

我将所有这些东西存储到内存直流中,最后在油漆处理程序中将内存直流复制到窗口直流。

但是我坚持这个过程,当我有一个.gif(有多个帧)并且我试图在DC上显示这个gif图像那时它只显示那个gif图像的一帧(它变成了一个普通的静止图像而不是动画图片。)

如何将整个gif图像存储在内存直流中,并在直流上显示完整的gif图像(带动画)。

我无法使用wx.AnimateCrl(),因为我需要在memoryDC中使用该图像。

任何帮助都非常明显。

1 个答案:

答案 0 :(得分:2)

根据定义,内存状态是静态的,memoryDC表示给定时间的DC状态,因此如果你想要动画,则需要刷新memoryDC和多次最终输出DC以产生动画效果,但是在在给定的瞬间,只有一帧Gif将在内存DC中,除非你使用的是量子计算机。

所以你应该做的是使用wx.animate.Animation获取GIF的帧并使用定时器在给定的DC上逐个绘制它们。

e.g。在ON_PAINT事件中执行类似的操作

ani = wx.animate.Animation("anim.gif") 
frameImage = ani.GetFrame(cur_frame)
bmp = frameImage.ConvertToBitmap()
dc.DrawBitmap(bmp, 0, 0)