资源简介
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++ 课程设计源码
相关资源
- 三相逆变PI双环控制代码
- 基于DSP2812的SVPWM算法C语言编程
- 最新传智播客C/C++第五期完整视频 R
-
CWMPPla
yer4类做的视频播放器 - 直流无刷电机PMW控制proteus仿真.zip
- WCS源码,WMS
- 基于51单片机的spwm波形产生程序
- SVPWM的原理及法则推导和控制算法详解
- 单片机pwm输出传统防盗器声音
- tq244-pwm频率调节源码
- stm32cubeIDE hul库freertos can中断收发,
- 三电平NPCSVPWM源代码
- 海思平台Hi3559A的pwm_led驱动
- 基于HAL库的PWM波输出
- 51单片机PWM调控风扇步进电机计时定时
- C++ 发送WM_COPYDATA消息
- 循迹小车程序基于msp430 输出两路pwm
- 直流电机的速度环PI控制-PWM部分(P
- 单片机直流电机PWM(调速)控制系统
- 51占空比频率可调pwm程序
- HAL基础实验源码16-4 stm32cubemx-F429IGT6通
- C51直流电机PWM测速源程序
- MFC设计局域网对战五子棋游戏源代码
- 频率、占空比可调的PWM波产生的C语言
- 51单片机定时器实现pwm输出c程序源代
评论
共有 条评论