利用定时器循环播放图片
写的程序里需要点击按钮启用定时器循环显示图片形成动画效果,找到的例子上是先使用 for 循环加载位图,获取设备上下文,创建兼容DC,创建定时器,加载位图到兼容DC,利用 for 循环显示图片,(这里的循环显示图片是放在创建窗口后面的,作用是显示窗口就有图片显示在上面),在WM_TIMER里面的步骤是加载位图到兼容DC,循环显示位图(这里的作用是循环显示图片,达到了动画效果);在WM_PAINT 里面的步骤是加载位图到兼容DC,循环显示位图(这里的作用是保证位图不被重绘掉)。
我的问题是如果在点击按钮以后播放动画跟上面的步骤是一样的,可是我的创建兼容DC是在创建窗口后面的(mdc),别的位图显示也是在控件被单击后才显示的,先定义HDC xiaoDC,
然后xiaoDC=CreateCompatibleDC(NULL);
接着把位图加载到这个兼容DC里面,并显示,显示的目标 DC 是 mdc ,源 DC 是 xiaoDC ,在PAINT里面只用把 mdc 的内容显示在 hdc 上就可以了,
为什么播放动画的图片也这样显示就不可以呢?
我在CREATE消息里加载的那些图片,然后在点击控件事件后根据别的位图显示的方法定义了个 HDC xunhuanDC;然后 xunhuanDC=CreateCompatibleDC(NULL);
接着创建了个定时器,然后就是显示位图从 xunhuanDC 到 mdc 。如果在TIMER里面也要加载位图到兼容DC里面然后显示位图从兼容 DC 到 mdc 的话,是不是也要像在控件里面那样先定义一个HDC,然后xunhuanDC=CreateCompatibleDC(NULL);这样呢?
因为在PAINT里面有了显示 mdc 的内容到 hdc 上,是不是在这里就不用有像例子上的那样再显示一遍图片了呢?
想象的是这样的,结果试了好多次都不能把动画的图片显示在窗口上。希望有人能帮我分析下。
shiyan.rar
(3.84 KB)
[ 本帖最后由 小赵q1 于 2012-9-7 22:30 编辑 ]