实现方法如下:
一.显示GIF图片控件类的介绍:
(CPictureEx类下载地址:)
无论是在VC6.0还是在VS2010中,都没有自带控件能显示GIF动画图片。能显示一些静态图片的只是Picture控件。本例程用到的GIF动画显示控件类是 PictureEX。其定义文件是 PictureEx.h,类的实现文件是 PictureEx.cpp。有关该类的成员函数和方法说明如下:
程序代码:
BOOL Load(...) ——加载GIF 并准备绘画对象;
BOOL Draw() ——绘制图像或继续动画显示。
void Stop() ——停止动画;
void UnLoad() —— 停止动画并释放所有资源;
void SetBkColor(COLORREF) ——为透明区域设置填充颜色;
COLORREF GetBkColor() ——获取当前填充颜色;
BOOL IsGIF() —— 如果当前图像是 GIF 则返回 TRUE;
BOOL IsAnimatedGIF() ——如果当前图像是动画 GIF,则返回TRUE;
BOOL IsPlaying() ——如果当前图像是以动画方式显示则返回TRUE;
SIZE GetSize() ——返回图像尺寸。
int GetFrameCount() ——返回当前图像的帧数量;
BOOL GetPaintRect(RECT *lpRect) ——返回当前绘制的矩形。
BOOL SetPaintRect(const RECT *lpRect) ——设置当前绘制的矩形;
二.编程应用步骤:
1.建立一个对话框的MFC工程。将GIF动画图片资源文件拷贝至工程目录的Res文件夹下,然后用添加资源的方法将这两个资源文件导入到你的工程中。
步骤:导入资源——找到要加载的GIF格式的文件——导入——资源类型写GIF,确定
( VS2010 中如果直接添加 GIF后缀的资源,会将GIF文件内部强制转化为静态BMP文件,从而使GIF图片失去动态效果,故在加载前应改个后缀如:.gifa。 )
2.拷贝PictureEx.h和PictureEx.cpp到你的工程目录下,然后在将该类添加到你的工程中。
3.一切准备工作以经完成。下面是添加代码:
在对话框类定义文件(XXXXDlg.h)中
添加:
#include "PictureEx.h"
定义:
CPictureEx* m_pGif;
在对话框的实现文件(XXXXXDlg.cpp)中
对话框初始化函数 BOOL CXXXXDlg::OnInitDialog()中添加如下代码:
BOOL CXXXXDlg::OnInitDialog()
{
........
m_pGif = new CPictureEx();
if (m_pGif == NULL) return;
RECT rt = {71,55,189,61}; //图片显示的矩形区域
m_pGif->Create(_T(""),WS_CHILD | WS_VISIBLE | SS_NOTIFY,rt, this);
m_pGif->ShowWindow(SW_SHOW);
// CString str;
// str = GetAppPath()+_T("resource\\LoadingProgress.gif");
// if(m_pGif->Load(str))
if (m_pGif->Load(MAKEINTRESOURCE(IDR_GIF_PROGRESS_LOADING),_T("GIF")))
{
m_pGif->SetAdID(_T("下载进度条"));
m_pGif->SetPosition(0, 0);
m_pGif->Draw();
}
else
{
delete m_pGif;
m_pGif = NULL;
}
........
}
即可实现GIF动画格式图片的播放。
注: 1、从资源中加载GIF图片时,加载前要把GIF图片的后缀名给换一下
2、图片如果不能正常显示,把GIF图片资源重新导入下再试
上面是从资源中加载GIF图片,如果从指定路径中加载直接用注释的那部分代码
m_pGif可能需要自己销毁