MFC加载gif动态图片的方法

在一个项目中需要加入GIF动画。一个版本时通过IE浏览器显示网页的形式,js脚本、CSS他人编写较繁琐;另一个VC项目需要使用MFC直接加载GIF动画。加载GIF动画网上有多种方式,大多数是将GIF填进资源,使用PictureEx类load资源文件  如下:

PictureEx图片显示类支持以下格式的图片:GIF (including animated GIF87a and GIF89a), JPEG, BMP, WMF, ICO, CUR等,我特别推崇的是能够做出动画,而且轻而易举,确实很COOL。

下面是周详的编程过程:

1. 新建项目:在VC6中用MFC新建一个基于对话框的GifDemo应用程式,接受任何缺省选项即可;

2.在项目中插入文档:把PictureEx.h,PictureEx.cpp文档copy 到项目文档夹下,Project->Add to Project->Files中选上PictureEx.h,PictureEx.cpp, Insert;

3.加入图片控件:从对话框控件中把Picture Control(图片控件)拖入主对话框中,修改其属性:ID:IDC_GIF,TYPE:Rectangle,其余接受缺省选项。再在ClassWiard中为IDF_GIF加入CSatic控制变量m_GifPic,
注意看一下,GifDemoDlg.h中是否加上了#include "PictureEx.h"(由ClassWiard加入)。然后将CSatic m_GifPic;更改成CPictureEx m_GifPic;

4.加载动画文档:先将要加载的动画文档放到 res 资源文档夹下,再将其Import进项目中,由于MFC只支持256BMP文档的图片,因此,我们要新建一个图片类型:"GIF",我在这里将我网站的宣传图片roaring.gif放进去 ,并将其ID修改成:IDR_GIFROARING。

import(导入)gif动画的周详过程:

在resourceview窗口中,单击鼠标右键,在出现的环境菜单中选择“import...”命令,会出现“import resource”选择文档对话框,文档类型选择“任何文档(*.*)”,open as 选项为"auto",再选择动画文档所在目录,选上要载入的动画文档 roaring.gif,再单击 import,由于gif动画类型不是vc默认的文档类型,这时会出现"custom resource type"对话框,键入“"gif"”,再单击ok,然后再修改其id。

5.在程式的适当位置添入加载代码: 这里,我们在CGifDemoDlg::OnInitDialog()函数中加入如下代码:

// TODO: Add extra initialization here

if (m_GifPic.Load(MAKEINTRESOURCE(IDR_GIFROARING),_T("Gif")))

m_GifPic.Draw();

但是由于我们的软件要写入硬件设备中,对文件大小有严格要求,几个软件间共用同一个GIF,必须采用动态调用GIF文件加载进MFC中。

查看PictureEx类,会发现类中有多个load函数,其中一个可以Load文件名,但是调用过程不是简单的Load,在Draw的样子显示GIF动画。试验多次后来发现需要在Load文件之前 Static::Create一下。 源码如下:

m_GifPic.Create(NULL,WS_CHILD | WS_VISIBLE |SS_ENHMETAFILE,CRect(50,50,100,100),this,1234);

m_GifPic.Load(_T("c://1.gif"));

m_GifPic.Draw();//

OK  使用PictureEx动态加载GIF文件完成

时间: 2024-11-05 18:35:31

MFC加载gif动态图片的方法的相关文章

VC下加载多种格式图片的方法总结IPicture, CxImage, CImage(AtlImage), CPictureEx

尽管VC有提供相应的API和类来操作bmp位图.图标和(增强)元文件,但却不支持jpg.gif和png等格式的图片,而这几种格式却是常常要用到的.这里我给大家介绍两种办法来操作这些格式的图片. 1.用API OleLoadPicture来加载JPG.GIF格式的图片(注:不支持PNG格式,另外GIF只能加载第一帧,且不支持透明) OleLoadPicture 函数实际上创建了一个IPicture类型的COM接口对象,然后我们可以通过这个COM接口来操作图片(实际上你也可以用API OleCrea

MFC 的 Picture Control 加载 BMP/PNG 图片的方法

1. 加载 BMP [cpp] view plaincopyprint? CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC); // 得到 Picture Control 句柄 pWnd->ModifyStyle(0, SS_BITMAP); // 修改它的属性为位图 pWnd->SetBitmap((HBITMAP)::LoadImage(NULL, _T("bmp.bmp"), IMAGE_BITMAP, 100, 50, LR_

加载数据 设置图片圆角方法

[_iconView sd_setImageWithURL:[NSURL URLWithString:item.image_list] placeholderImage:[UIImage imageNamed:@"defaultUserIcon"] options:SDWebImageCacheMemoryOnly completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageUR

vc++加载透明png图片方法——GDI+和CImage两种

vc++加载透明png图片方法——GDI+和CImage两种 在加载png时遇到了麻烦,后来用了两个方法解决了.一个是用GDI+,另外就是用vs.net MFC自带的CImage. 先看看GDI+的方法 方法1: 1.GDI+画透明图层(alpha)的png图片 stdafx加入如下: #include <comdef.h>//初始化一下com口 #include "GdiPlus.h" using namespace Gdiplus; #pragma comment(li

JavaScript实现判断图片是否加载完成的3种方法整理

JavaScript实现判断图片是否加载完成的3种方法整理 有时候我们在前端开发工作中为了获取图片的信息,需要在图片加载完成后才可以正确的获取到图片的大小尺寸,并且执行相应的回调函数使图片产生某种显示效果.本文主要整理了几种常见的javascipt判断图片加载完成时的方法,并通过代码与实际应用相结合进行解释与说明. onload方法 通过向img标签添加onload属性,并填入相应的函数来执行后续的javascipt代码.如下代码例子中img元素默认是不显示的,通过onload判断加载完成后再将

ASP.NET动态加载用户控件的方法

方法是使用LoadControl方法,根据用户控件的相对路径,动态生成用户控件对象 用户控件 public class UserControlA :UserControl { public UserControlA(string name) { //TODO } } 需要动态生成控件的地方 string ucPath = "../UserControls/UserControlA.ascx"; UserControlA ca = Page.LoadControl(ucPath) as

js 动态加载事件的几种方法总结

本篇文章主要是对js 动态加载事件的几种方法进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助 有些时候需要动态加载javascript事件的一些方法往往我们需要在 JS 中动态添加事件,这就涉及到浏览器兼容性问题了,以下谈及的几种方法,我们也常常混合使用. 方法一.setAttributevar obj = document.getElementById("obj");obj.setAttribute("onclick", "javasc

MFC加载动态链接库方法

1.LoadDll.cpp 1 #include "StdAfx.h" 2 #include "LoadDLL.h" 3 4 pMFCCallBackDll DLL_MFCCallBackDll; 5 6 HINSTANCE g_Hinstance; //实例句柄 7 8 //加载DLL 9 BOOL LoadDll(char *name) 10 { 11 //char name[200] = {""}; //DLL名字存放,且,最大长度为50

(android开源库android-gif-drawable)第二篇 加载网络gif图片

大家好,  今天给大家带来如何使用 android开源库android-gif-drawable来 加载网络gif图片 同样的DEMO下载地址在 最后 请大家去下载 . 如果gif图片地址无效 了.      请大家自行到网上去寻找一个 gif图片地址 复制过去就可以了.谢谢大家 不会在 eclipse下使用  (android开源库android-gif-drawable)     请看我的这篇博客   (android开源库android-gif-drawable)第一篇 eclipse使用