MFC显示GIF动画图片
本帖则将讨论如何在MFC的对话框里显示GIF动画图片。一些关于传统控件的美化方法正在研究当中会陆续发帖的。
这是本帖用到的一个VS2008例程。
一.显示GIF图片控件类的介绍:
无论是在VC6.0还是在VS2008中,都没有控件能显示GIF动画图片。能显示一些静态图片的只是Picture控件。本例程用到的GIF动画显示控件类是PictureEX。其定义文件是PictureEx.h,类的实现文件是PictureEx.cpp。有关该类的成员函数和方法说明如下:
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.首先在网上下载两个小的GIF动画图片,由于VS2008无法识别这样的文件的扩展名,会弹出输入文件类型的扩展名,输入一个字符串即可。这个字符窜在后面的代码中会用到。
2.建立一个对话框的MFC工程。将下载的资源文件拷贝至工程目录的Res文件夹下,然后用添加资源的方法将这两个资源文件加载到你的工程中。
3.这一步非常重要。首先在我的例程里拷贝PictureEx.h和PictureEx.cpp到你的工程目录下,然后在将该类添加到你的工程中。
4.在对话框面板上添加两个Picture控件分别给它们建立Control型的Static变量。我的例程里名字分别为m_gifpicture和m_girl。
5.一切准备工作以经完成。下面是添加代码:
在对话框类定义文件(我的例程是GifPictureDlg.h)中添加一句:
找到下面的两行:
Cstatic m_girl;
将其改为:
CPictureEx m_girl;
在对话框的实现文件(我的例程是GifPictureDlg.cpp)中的对话框初始化函数BOOL CGifPictureDlg::OnInitDialog()中添加如下代码:
m_gifpicture.Draw();
if (m_girl.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))
m_girl.Draw();
下面编译该工程并运行一下,可以看到GIF动画。我的运行结果如下(由于是截屏的所以没有动画效果):
在本论坛的本版块里,我陆续的发了两个这方面的帖子,列举如下:
1.如何创建XP风格的按钮控件 http://bbs.bccn.net/thread-292048-1-1.html
2.MFC显示Flash动画的编程实现 http://bbs.bccn.net/thread-292047-1-1.html
MFC显示GIF动画图片的更多相关文章
- j-query应用---鼠标悬停不同文字显示不同背景图片banner动画
源代码部分:注意事项:样式表的引用的路径要一致. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ...
- MFC入门(三)-- MFC图片/文字控件(循环显示文字和图片的小程序)
惯例附上前几个博客的链接: MFC入门(一)简单配置:http://blog.csdn.net/zmdsjtu/article/details/52311107 MFC入门(二)读取输入字符:http ...
- Label,PushButton,ToolButton 实现动态图片按钮,Label显示gif动画
.h文件 public: explicit event(QWidget *parent = 0); ~event(); QImage image; QLabel *label; QLabel *lab ...
- MFC 显示CImg图片
很多示例关于CImg都是基于控制台的,如何把它用于MFC中显示. Problem:直接按照控制台示例写入MFC程序中,当程序执行完display后,其后面的代码便不再执行. solution:开辟新的 ...
- 一个Android上的以滑动揭示的方式显示并切换图片的View
SlideView是一个Android上的以滑动揭示的方式显示并切换图片的View,以视觉对比的方式把一套相似的图片展示出来. 示例 翻页图片揭示效果: 特性 设置一组(List<ImageIn ...
- Android中显示gif动态图片
在android中显示一个静态图片比如png jpg等等都很方便,但是如果要显示一个gif 动态图片就需要进行一些处理. 本文是采用自定义view 然后进行重新onDraw方法来实现 首先自定义Vie ...
- iOS:Gif动画功能(显示gif动画、获取gif动画时长、获取gif动画执行次数)
一.简单介绍 gif动画是iOS开发中很常用的一个功能,有的是为了显示加载视频的过程,更多的是为了显示一个结果状态(动画更直观). 那么如何执行gif动画,方法有很多.(这里只写一下方法三,前两种之前 ...
- MFC 对话框Picture Control(图片控件)中静态和动态显示Bmp图片
版权声明:本文为博主原创文章,转载请注明CSDN博客源地址! 共同学习,一起进步~ https://blog.csdn.net/Eastmount/article/details/26404733 ...
- MFC显示bmp图像
有了bmp文件读写的基础,我们就能够開始用MFC显示BMP图片了. 在这里,事实上微软为我们提供了一个实现bmp文件显示的框架,名叫diblook,我们能够先下载下来看看. 以下上链接:DIBLOOK ...
随机推荐
- LT3759 宽输入电压范围升压 / 负输出 / SEPIC 控制器 可在输入电压低至 1.6V 的情况下工作
引言当今的许多电子设备都需要一个负输出或正输出转换器,有时则是两者均需要.另外,它们还必需采用各种电源运作,包括 USB.墙上适配器.碱性电池和锂电池等. 为了从可变输入电压产生不同极性的输出,电源设 ...
- MySQL -- 调优
多数时候数据库会成为整个系统的瓶颈,比如大的数据量的插入与修改,频繁的亦或是高流量的访问,都会对数据库系统带来很大的压力.我在平时工作的时候,总是会遇到大数据量的插入.修改或是查询的操作,所以在工作的 ...
- Python学习(四)数据结构 —— dict
词典类型 dict 字典由键(key)和对应值(value)成对组成.字典也被称作关联数组或哈希表. dict 赋值 dict 整体放在花括号{}中,每个键与值用冒号隔开(:),每对用逗号分割: d ...
- HDU 3949 XOR 高斯消元
题目大意:给定一个数组,求这些数组通过异或能得到的数中的第k小是多少 首先高斯消元求出线性基,然后将k依照二进制拆分就可以 注意当高斯消元结束后若末尾有0则第1小是0 特判一下然后k-- 然后HDU输 ...
- C#中的数组【转】
目录 数组的声明 数组的初始化 数组的访问 数组的常用属性和方法 为方便起见,以下数组均定义为整型 数组的声明 C#声明数组时,方括号[]必须跟在类型后面,而不是标识符后面 1. 声明一维数组 C#数 ...
- Glide Picasso Fresco UIL 图片框架 缓存 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- JavaScript:避免代码的重复执行
我喜欢到一些大型网站上去翻阅它们的原代码,期望能找到一些可以应用到自己的代码中的模式,或发现一些之前从未听说过的工具和技巧.可是,在我查看这些大型网站的源代码时,经常会发现一个问题,那就是重复的代码执 ...
- HTML-获取/修改html页面标题
作为一个标准的HTML文档,网页标题(title)是必不可少的属性.随着浏览器的发展,我们又多了一种访问和修改文档的方式:DOM.所以我们获取网页标题的方式大致可分为以下两种: 通过document对 ...
- 同一个数据库实例,不同用户下多表创建视图,Hibernate完毕ORM映射,Spring整合,后台实现
1.同一个数据库实例.同用户,多表创建视图 2.同一个数据库实例,不同用户下.多表创建视图 3.同一个数据库,不同数据库实例,多表创建视图 4.不同类型数据库,多表创建视图 1.同一个数据库实例.同用 ...
- Web中树形数据(层级关系数据)的实现—以行政区树为例
在Web开发中常常遇到树形数据的操作,如菜单.组织机构.行政区(省.市.县)等具有层级关系的数据. 以下以行政区为例说明树形数据(层级关系数据)的存储以及实现,效果如图所看到的. 1 数据库表结构设计 ...