您的位置:首页 > 其它

vs2010中正确加载gif格式图片

2013-05-16 14:46 155 查看
实现方法如下:

一.显示GIF图片控件类的介绍:

(CPictureEx类下载地址:http://download.csdn.net/detail/wangtiti/4372882

无论是在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可能需要自己销毁
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: