• 大小: 46KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-18
  • 语言: C/C++
  • 标签: WindowsCE  WM  

资源简介

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个文件信息

评论

共有 条评论