资源简介
WindowsCE或WM上,用C++实现加载显示GIF动画的程序以及代码

代码片段和文件信息
#include
#include “gif89a.h“
#include “gif.h“
LPCGLOBAL_INFO gi;
LPframe fm;
BYTE *prevBits;
//将颜色表转换成调色板
int get_palette(RGBQUAD *lpPaletteBYTE *lpColorTableint size)
{
DWORD *p=(DWORD*)lpPalette; BYTE *q=lpColorTable;
while (size--) {*p++=RGB(*(q+2)*(q+1)*q);q+=3;}
return sizeof(RGBQUAD)*256;
}
//对当前帧进行交错处理
void interlace()
{
if (!fm->interlaceFlag) return;
int w=fm->imageWidthh=fm->imageHeighti;
BYTE *dest*p*q; dest=new BYTE[w*h];
q=fm->dataBuf;
for (i=0;i for (i=4;i for (i=2;i for (i=1;i
delete []fm->dataBuf;
fm->dataBuf=dest;
fm->interlaceFlag=FALSE;
}
//颜色复制函数;不复制前景色
void copycolor(BYTE *p1BYTE *p2int len)
{
while (len--){if(*p2!=fm->ctrlExt.trsColorIndex) *p1=*p2; p1++;p2++;}
}
//取得当前帧的图像位数据
int get_bits(BYTE *lpBits)
{
BYTE *p*q;
int bpl=(gi->scrWidth*8+31)/32*4; //bytes per line
int iw=fm->imageWidthh=fm->imageHeight;
if ((wscrWidth||hscrHeight)&&prevBits)
memcpy(lpBitsprevBitsbpl*gi->scrHeight);
p=lpBits+(gi->scrHeight-1-fm->imageTPos)*bpl+fm->imageLPos;
q=(BYTE*)(fm->dataBuf);
if (!fm->ctrlExt.trsFlag||!prevBits) //没有透明色或者是第一帧
for (i=0;i else
for (i=0;i
return bpl*gi->scrHeight;
}
HANDLE LoadGif(LPCTSTR fn)
{
CGif89a gif(fnFALSE); if (!gif) return 0;
int ilenwhbplframes;
HANDLE hResDyn;
BYTE *lpResDyn*lpBits;
RESDYNDATAHEADER *lpHead;
DISPLAYframeINFO *lpDisp;
STOREframeINFO *lpStore;
gi=gif.getGlobalInfo();
frames=gi->frames;
w=gi->scrWidth; h=gi->scrHeight;
bpl=(w*8+31)/32*4;
len=sizeof(RESDYNDATAHEADER)
+sizeof(DISPLAYframeINFO)*frames
+sizeof(STOREframeINFO)*frames
+sizeof(RGBQUAD)*256;
len+=(sizeof(RGBQUAD)*256+bpl*h)*frames;
hResDyn=GlobalAlloc(GHNDlen);
if (!hResDyn) return 0;
lpResDyn=(BYTE*)GlobalLock(hResDyn);
lpHead=(RESDYNDATAHEADER*)lpResDyn;
lpHead->ContentSize=len;
lpHead->Width=w;
lpHead->Height=h;
lpHead->BitCount=8;
lpHead->DisplayframeQuantity=frames;
lpHead->StroeframeQuantity=frames;
lpDisp=(DISPLAYframeINFO*)(lpResDyn+sizeof(RESDYNDATAHEADER));
lpStore=(STOREframeINFO*)((BYTE*)lpDisp+sizeof(DISPLAYframeINFO)*frames);
lpBits=(BYTE*)lpStore+sizeof(STOREframeINFO)*frames;
len=0;
if (gi->gFlag)
len=get_palette((RGBQUAD*)lpBitsgi->gColorTablegi->gSize);
lpBits+=len; prevBits=NULL;
for(i=0;iames;i++)
{
fm=(LPframe)gif.getNextframe();
if (!fm) goto error;
lpDisp->Storeframe=i+1;
lpDisp->DelayTime=fm->ctrlExt.delayTime*10;
lpStore->Width=w;
lpStore->Height=h;
lpStore->BitCount=8;
lpStore->LocalPalette=fm->lFlag;
lpStore->XorFlag=0;
lpStore->Reserved=0;
lpStore->DataOfset=lpBits-lpResDyn;
len=0;
if (fm->lF
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 27136 2007-01-21 17:45 ShowGif\ARMV4Rel\ShowGif.exe
目录 0 2007-01-21 17:50 ShowGif\ARMV4Rel
文件 3619 2007-01-21 17:03 ShowGif\Gif.cpp
文件 1230 2007-01-21 17:09 ShowGif\Gif.h
文件 17101 2007-01-21 17:36 ShowGif\gif89a.cpp
文件 1771 2007-01-21 16:46 ShowGif\gif89a.h
文件 5313 2007-01-21 17:11 ShowGif\image.cpp
文件 1817 2007-01-21 17:07 ShowGif\image.h
文件 2863 2007-01-21 16:20 ShowGif\MainFrm.cpp
文件 2315 2007-01-21 16:20 ShowGif\MainFrm.h
文件 768 2007-01-21 16:20 ShowGif\newres.h
文件 4087 2007-01-21 16:20 ShowGif\ReadMe.txt
文件 630 2007-01-21 16:20 ShowGif\res\Cmdbar.bmp
文件 1078 2007-01-21 16:20 ShowGif\res\ShowGif.ico
文件 417 2007-01-21 16:20 ShowGif\res\ShowGif.rc2
目录 0 2007-01-21 16:20 ShowGif\res
文件 1199 2007-01-21 16:59 ShowGif\resource.h
文件 4126 2007-01-21 16:20 ShowGif\ShowGif.cpp
文件 1380 2007-01-21 16:20 ShowGif\ShowGif.h
文件 10349 2007-01-21 17:03 ShowGif\ShowGif.rc
文件 66560 2007-01-21 17:49 ShowGif\ShowGif.vcb
文件 2519 2007-01-21 17:43 ShowGif\ShowGif.vcc
文件 3281 2007-01-21 17:46 ShowGif\ShowGif.vcl
文件 50688 2007-01-21 17:49 ShowGif\ShowGif.vco
文件 16135 2007-01-21 17:47 ShowGif\ShowGif.vcp
文件 544 2007-01-21 16:20 ShowGif\ShowGif.vcw
文件 2234 2007-01-21 17:44 ShowGif\ShowGifDoc.cpp
文件 1468 2007-01-21 17:44 ShowGif\ShowGifDoc.h
文件 2778 2007-01-21 17:43 ShowGif\ShowGifView.cpp
文件 1800 2007-01-21 17:43 ShowGif\ShowGifView.h
............此处省略6个文件信息
- 上一篇:图书馆管理系统c语言编写
- 下一篇:物业管理系统c++ 课程设计源码
相关资源
- LC-PWM-RGB(RGB LED灯 调色调光器 PWM控制
- STM32 多路PWM输出
- 基于STM32f103 PWM波呼吸灯
- MFC视频播放器源码(支持avi/wma/mp3等格
- 485通信控制3路相位差120°PWM输出
- svpwm程序
- 基于51单片机的c语言程序 电机转速测
- C++显示GIF动画和图片
- 06.什么是递归.wmv目前数据结构最好的
- 中国象棋引擎ZWM 版本0.2.(VC++源码)
- STM32实战系列源码,按键/定时器/PWM
-
SVPWM三相逆变 MATLAB Simuli
nk仿真模型 - dsp2812三相PWM逆变源程序C++
- c++封装好的IP的获取和修改源码,通过
- WM(Wu-Manber)算法详解及C语言实现
- 51单片机产生PWM的程序和怎样控制直流
- 超声波避障,光电测速,pwm综合应用
- 用DSP实现spwm的C语言程序
- pwm C语言程序
- kbmMemTable v7.30 FullSource
- 三相逆变PI双环控制代码
- 基于DSP2812的SVPWM算法C语言编程
- 最新传智播客C/C++第五期完整视频 R
-
CWMPPla
yer4类做的视频播放器 - 直流无刷电机PMW控制proteus仿真.zip
- WCS源码,WMS
- 基于51单片机的spwm波形产生程序
- SVPWM的原理及法则推导和控制算法详解
- 单片机pwm输出传统防盗器声音
- tq244-pwm频率调节源码
评论
共有 条评论