在上一篇文章中,我们介绍了如何导入一张Gif图片到VS2010中,今天我们继续讲解如何在对话框上显示Gif图片。
本文用到了上一篇文章中示例工程。
添加测试按钮
我们这次重点是描述如何加载并显示Gif图片,所以为了方便描述,我们首先在资源视图中添加一个按钮,当按钮被点击的时候,显示Gif图片的代码被执行,对话框上显示Gif图片。但是,这种方式下,因为显示Gif是一个阻塞过程,所以显示Gif的同时,对话框界面线程被阻塞。实际工程中,应该使用工作线程的方式来实现。
![c113c67d14664534d9f28f6e8d57ffee.png](https://img-blog.csdnimg.cn/img_convert/c113c67d14664534d9f28f6e8d57ffee.png)
添加Gif显示代码
首先在对话框的头文件中添加如下成员:
![b487136f06bab39690a47bf8fbbadc17.png](https://img-blog.csdnimg.cn/img_convert/b487136f06bab39690a47bf8fbbadc17.png)
同时,在对话框的构造函数中,我们需要对这些数据成员进行初始化
![196e60c82e4cb95e43573d723657b58f.png](https://img-blog.csdnimg.cn/img_convert/196e60c82e4cb95e43573d723657b58f.png)
这里使用到了GDI+中的Image类,所以,需要在对话框的头文件中添加对GDI+的引用。
![0778555f008884fbb2c02fb876b0a200.png](https://img-blog.csdnimg.cn/img_convert/0778555f008884fbb2c02fb876b0a200.png)
接下来是GDI+的初始化,如果没有这个初始化,则可能加载GIF图片阶段会报错。
将以下代码添加到App类的InitInstance中
![91666dd0826eb14f3f93ef1102a6d698.png](https://img-blog.csdnimg.cn/img_convert/91666dd0826eb14f3f93ef1102a6d698.png)
当然,我们先添加一个名为m_gdiplusToken数据成员
![2087b79e5e47c27937e9474b311b7c44.png](https://img-blog.csdnimg.cn/img_convert/2087b79e5e47c27937e9474b311b7c44.png)
在对话框类的实现代码中,我们首先定义一个函数,用来加载指定的资源ID到Image对象。
![3e3805fe7f749ded4ea5b9396c9ea7bc.png](https://img-blog.csdnimg.cn/img_convert/3e3805fe7f749ded4ea5b9396c9ea7bc.png)
最后,在按钮的点击响应代码中,我们的实现代码如下:
![3355d8598493cfb4b22a4d595ed79de2.png](https://img-blog.csdnimg.cn/img_convert/3355d8598493cfb4b22a4d595ed79de2.png)
需要注意的地方
我们使用的是一张具有透明背景的Gif图片资源,所以在以上绘制代码中,我们首先按照对话框的颜色绘制了相同颜色的背景。
如果不加入绘制背景的代码,则Gif绘制会出现背景随机混乱的问题。
![01acc085a7dcc76bd7515d2946506752.png](https://img-blog.csdnimg.cn/img_convert/01acc085a7dcc76bd7515d2946506752.png)
完工
修改好代码后,编译执行,点击按钮,就可以看到对话框上显示我们导入的Gif图片了。
![5ee2c41441bc2824fc7178891fa4cf33.png](https://img-blog.csdnimg.cn/img_convert/5ee2c41441bc2824fc7178891fa4cf33.png)