c android显示gif动画,MFC显示GIF动画图片

本帖则将讨论如何在MFC的对话框里显示GIF动画图片。一些关于传统控件的美化方法正在研究当中会陆续发帖的。

这是本帖用到的一个VS2008例程。

附件

f7dcefddbab294ef52fc5cd8838c65ae.gif GifPicture.rar (138.1 KB)

上传时间:2009-11-25 16:15

下载次数:1173

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

无论是在VC6.0还是在VS2008中,都没有控件能显示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.首先在网上下载两个小的GIF动画图片,由于VS2008无法识别这样的文件的扩展名,会弹出输入文件类型的扩展名,输入一个字符串即可。这个字符窜在后面的代码中会用到。

2.建立一个对话框的MFC工程。将下载的资源文件拷贝至工程目录的Res文件夹下,然后用添加资源的方法将这两个资源文件加载到你的工程中。

3.这一步非常重要。首先在我的例程里拷贝PictureEx.h和PictureEx.cpp到你的工程目录下,然后在将该类添加到你的工程中。

4.在对话框面板上添加两个Picture控件分别给它们建立Control型的Static变量。我的例程里名字分别为m_gifpicture和m_girl。

5.一切准备工作以经完成。下面是添加代码:

在对话框类定义文件(我的例程是GifPictureDlg.h)中添加一句:

程序代码:

#include "PictureEx.h"

找到下面的两行:

程序代码:

Cstatic m_gifpicture;

Cstatic m_girl;

将其改为:

程序代码:

CPictureEx m_gifpicture;

CPictureEx m_girl;

在对话框的实现文件(我的例程是GifPictureDlg.cpp)中的对话框初始化函数BOOL CGifPictureDlg::OnInitDialog()中添加如下代码:

程序代码:

if (m_gifpicture.Load(MAKEINTRESOURCE(IDR_GIF1),_T("gif")))//IDR_GIF1是添加的GIF动画的ID号。gif即是在添加时所键入的文件类型

m_gifpicture.Draw();

if (m_girl.Load(MAKEINTRESOURCE(IDR_GIF2),_T("gif")))

m_girl.Draw();

下面编译该工程并运行一下,可以看到GIF动画。我的运行结果如下(由于是截屏的所以没有动画效果):

L3Byb3h5L2h0dHAvZnRwYmJzLmJjY24ubmV0LzAwNS9tb250aF8wOTExLzIwMDkxMTI1XzJlY2IwMTk4ZWNiMzhhOWZiM2M1T2xpSE85NU9aNWVILnBuZy50aHVtYi5qcGc=.jpg

题外话

如何让自己的对话框显得更加好看,增加一些动态元素,这是我专注于MFC之后忙着解决的问题。

j-query应用---鼠标悬停不同文字显示不同背景图片banner动画

源代码部分:注意事项:样式表的引用的路径要一致. ..

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

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 ...

随机推荐

如何用 Nodejs 分析一个简单页面

本文目的 在浏览器地址栏中输入 localhost:3000,在页面显示 博客园首页 的 20 篇文章标题. 过程分析 首先需要端口的监听,这就需要引入 Node 中最重要的模块之一 express. ...

XListView刷新

package com.example.da; import java.util.ArrayList;import java.util.List; import com.badu.net.Networ ...

C++基础笔记(四)C++内存管理

析构函数 * 析构函数在对象所占用内存释放时调用,通常用来释放相关的资源 * 析构函数就是一个特殊的类成员函数,它是构造函数相反 构造函数:对象在分配内存之后,立即调用 析构函数:对象在内存被释放之前 ...

android注解[Jake Wharton Butter Knife]

Introduction Annotate fields with @InjectView and a view ID for Butter Knife to find and automatical ...

easyui-prompt弹出框操作

效果图如下: 代码如下: $(document).ready(function () { //绑定按钮操作 $('#btnMove').click(function () { var ids = ge ...

Amazon MWS 上传数据 (二) 构造请求

上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的 ...

CFA

拜耳色彩滤波阵列(Bayer Color Filter Array, CFA)是非常有名的彩色图片的数字采集格式.由1/2的G,1/4得R,1/4的B组成. 当Image Sensor向外逐行输出数据 ...

GetHashCode方法学习

GetHashCode方法我的理解是做两个对象的比较,每个对象,不管是值类型还是应用类型都提供这个基本函数,都可以去重写它.GetHashTable通常用于HashTable.List<> ...

OpenERP Client Error

SyntaxError: JSON.parse: unexpected end of data http/mydomain:8069/web/webclient/js:23114 Solutions: ...

HDU 3316 My Brute(二维费用流)经典

My Brute Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值