資源簡介
GIF圖片 c++顯示代碼

代碼片段和文件信息
#include?“stdafx.h“
#include?“GIFFile.h“
#include?
#define?ASSERT?assert
#define?TRACE(...)?
//////////////////////////////////////////////////////////////////////
//?Nested?structures?member?functions
//////////////////////////////////////////////////////////////////////
inline?int?GIFFile::TGIFControlExt::GetPackedValue(enum?ControlExtValues?Value)
{
int?nRet?=?(int)m_cPacked;
switch?(Value)
{
case?GCX_PACKED_DISPOSAL:
nRet?=?(nRet?&?28)?>>?2;
break;
case?GCX_PACKED_USERINPUT:
nRet?=?(nRet?&?2)?>>?1;
break;
case?GCX_PACKED_TRANSPCOLOR:
nRet?&=?1;
break;
};
return?nRet;
}
inline?int?GIFFile::TGIFLSDescriptor::GetPackedValue(enum?LSDPackedValues?Value)
{
int?nRet?=?(int)m_cPacked;
switch?(Value)
{
case?LSD_PACKED_GLOBALCT:
nRet?=?nRet?>>?7;
break;
case?LSD_PACKED_CRESOLUTION:
nRet?=?((nRet?&?0x70)?>>?4)?+?1;
break;
case?LSD_PACKED_SORT:
nRet?=?(nRet?&?8)?>>?3;
break;
case?LSD_PACKED_GLOBALCTSIZE:
nRet?&=?7;
break;
};
return?nRet;
}
inline?int?GIFFile::TGIFImageDescriptor::GetPackedValue(enum?IDPackedValues?Value)
{
int?nRet?=?(int)m_cPacked;
switch?(Value)
{
case?ID_PACKED_LOCALCT:
nRet?>>=?7;
break;
case?ID_PACKED_INTERLACE:
nRet?=?((nRet?&?0x40)?>>?6);
break;
case?ID_PACKED_SORT:
nRet?=?(nRet?&?0x20)?>>?5;
break;
case?ID_PACKED_LOCALCTSIZE:
nRet?&=?7;
break;
};
return?nRet;
}
BOOL?GIFFile::Load(LPCTSTR?szFileName)
{
ASSERT(szFileName);
HANDLE?hFile?=?CreateFile(szFileName?GENERIC_READ?FILE_SHARE_READ?NULL?OPEN_EXISTING?FILE_ATTRIBUTE_NORMAL?NULL);
if?(hFile?==?NULL)
{
TRACE(_T(“Load?(file):?Error?opening?file?%s\n“)?szFileName);
return?FALSE;
};
//獲得圖片文件的大小,用來分配全局內存
DWORD?dwSize?=?GetFileSize(hFile?NULL);
HGLOBAL?hGlobal?=?GlobalAlloc(GMEM_MOVEABLE?|?GMEM_NODISCARD?dwSize);
if?(!hGlobal)
{
TRACE(_T(“Load?(file):?Error?allocating?memory\n“));
return?FALSE;
};
char?*pData?=?reinterpret_cast(GlobalLock(hGlobal));
if?(!pData)
{
TRACE(_T(“Load?(file):?Error?locking?memory\n“));
GlobalFree(hGlobal);
return?FALSE;
};
DWORD?dwReadedSize;?//保存實際讀取的文件大小
ReadFile(hFile?pData?dwSize?&dwReadedSize?NULL);?//讀取圖片到全局內存當中
CloseHandle(hFile);?//關閉文件句柄
GlobalUnlock(hGlobal);
BOOL?bRetValue?=?Load(hGlobal?dwSize);
GlobalFree(hGlobal);
return?bRetValue;
}
void?GIFFile::UnLoad()
{
if?(m_pPicture)
{
m_pPicture->Release();
m_pPicture?=?NULL;
};
if?(m_pStream){
m_pStream->Release();
m_pStream?=?NULL;
}
std::vectorame>::iterator?it;
for?(it?=?m_arrframes.begin();?it?ames.end();?it++){
(*it).m_pPicture->Release();
(*it).m_pStream->Release();
}
m_arrframes.clear();
m_pGIFLSDescriptor?=?NULL;
m_pGIFHeader?=?NULL;
m_pRawData?=?NULL;
m_bIsGIF?=?FALSE;
m_clrBackground?=?RGB(255?255?255);?//?white?by?default
m_nGlobalCTSize?=?0;
m_nCurrOffset?
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????9965??2016-04-19?16:43??GIFStatic.cpp
?????文件???????1248??2016-04-19?16:47??GIFStatic.h
?????文件??????14227??2016-04-19?16:20??GIFFile.cpp
?????文件???????5429??2016-04-19?16:18??GIFFile.h
-----------?---------??----------?-----??----
????????????????30869????????????????????4
- 上一篇:多元線性回歸
- 下一篇:CvvImage.zip類文件
評論
共有 條評論