資源簡介
用VC++開發(fā)的,完全用API函數(shù)編寫的DIB圖像的打開與保存、顯示

代碼片段和文件信息
//?cdib.cpp
#include?“stdafx.h“
#include?“math.h“
#include?“process.h“
#include?“cdib.h“
#include?“GlobalApi.h“
#ifdef?_DEBUG
#define?new?DEBUG_NEW
#undef?THIS_FILE
static?char?THIS_FILE[]?=?__FILE__;
#endif
//?聲明串行化過程
IMPLEMENT_SERIAL(CDib?Cobject?0);
/*************************************************************************
?*
?*?\函數(shù)名稱:
?*???CDib()
?*
?*?\輸入?yún)?shù):
?*?無
?*
?*?\返回值:
?*???無
?*
?*?\說明:
?*???構(gòu)造函數(shù)
?*
?************************************************************************
?*/
CDib::CDib()
{
m_hFile??????=?NULL;
m_hBitmap????=?NULL;
m_hPalette???=?NULL;
m_nBmihAlloc?=?m_nImageAlloc?=?noAlloc;
Empty();
}
/*************************************************************************
?*
?*?\函數(shù)名稱:
?*???CDib()
?*
?*?\輸入?yún)?shù):
?*?CSize size -?位圖尺寸
?*?int nBitCount -?象素位數(shù)
?*
?*?\返回值:
?*???無
?*
?*?\說明:
?*???構(gòu)造函數(shù)
?*???根據(jù)給定的位圖尺寸和象素位數(shù)構(gòu)造CDib對象,并對信息頭和調(diào)色板分配內(nèi)存
?*???但并沒有給位圖數(shù)據(jù)分配內(nèi)存
?*
?************************************************************************
?*/
CDib::CDib(CSize?size?int?nBitCount)
{
m_hFile??????=?NULL;
m_hBitmap????=?NULL;
m_hPalette???=?NULL;
m_nBmihAlloc?=?m_nImageAlloc?=?noAlloc;
Empty();
//?根據(jù)象素位數(shù)計算調(diào)色板尺寸
ComputePaletteSize(nBitCount);
//?分配DIB信息頭和調(diào)色板的內(nèi)存
m_lpBMIH?=?(LPBITMAPINFOHEADER)?new?
char[sizeof(BITMAPINFOHEADER)?+?sizeof(RGBQUAD)?*?m_nColorTableEntries];
//?設(shè)置信息頭內(nèi)存分配狀態(tài)
m_nBmihAlloc?=?crtAlloc;
//?設(shè)置信息頭中的信息
m_lpBMIH->biSize =?sizeof(BITMAPINFOHEADER);
m_lpBMIH->biWidth =?size.cx;
m_lpBMIH->biHeight =?size.cy;
m_lpBMIH->biPlanes =?1;
m_lpBMIH->biBitCount =?nBitCount;
m_lpBMIH->biCompression?=?BI_RGB;
m_lpBMIH->biSizeImage =?0;
m_lpBMIH->biXPelsPerMeter?=?0;
m_lpBMIH->biYPelsPerMeter?=?0;
m_lpBMIH->biClrUsed =?m_nColorTableEntries;
m_lpBMIH->biClrImportant=?m_nColorTableEntries;
//?計算圖象數(shù)據(jù)內(nèi)存的大小,并設(shè)置此DIB的調(diào)色板的指針
ComputeMetrics();
//?將此DIB的調(diào)色板初始化為0
memset(m_lpvColorTable?0?sizeof(RGBQUAD)?*?m_nColorTableEntries);
//?暫時不分配圖象數(shù)據(jù)內(nèi)存
m_lpImage?=?NULL;?
}
/*************************************************************************
?*
?*?\函數(shù)名稱:
?*???~CDib()
?*
?*?\輸入?yún)?shù):
?*?無
?*
?*?\返回值:
?*???無
?*
?*?\說明:
?*???析構(gòu)函數(shù),并釋放所有分配的DIB內(nèi)存
?*
?************************************************************************
?*/
CDib::~CDib()
{
Empty();
}
/*************************************************************************
?*
?*?\函數(shù)名稱:
?*???GetDimensions()
?*
?*?\輸入?yún)?shù):
?*???無
?*
?*?\返回值:
?*???CSize -?DIB的寬度和高度
?*
?*?\說明:
?*???返回以象素表示的DIB的寬度和高度
?*
?************************************************************************
?*/
CSize?CDib::GetDimensions()
{
if(m_lpBMIH?==?NULL)?return?CSize(0?0);
return?CSize((int)?m_lpBMIH->biWidth?(int)?m_lpBMIH->biHeight);
}
/*************************************************************************
?*
?*?\函數(shù)名稱:
?*???AttachMapFile()
?*
?*?\輸入?yún)?shù):
?*???const char*?strPathname -?映射文件的路徑名
?*???BOOL bShare -
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????38635??2006-05-30?01:08??DIBDisplay\cdib.cpp
?????文件???????3645??2006-05-30?01:08??DIBDisplay\cdib.h
?????文件???????1736??2006-05-30?01:08??DIBDisplay\ChildFrm.cpp
?????文件???????1456??2006-05-30?01:08??DIBDisplay\ChildFrm.h
?????文件??????65095??2006-05-30?01:08??DIBDisplay\ColorTable.h
?????文件??????66336??2009-07-08?21:49??DIBDisplay\Debug\cdib.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\cdib.sbr
?????文件??????17621??2009-07-08?21:49??DIBDisplay\Debug\ChildFrm.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\ChildFrm.sbr
?????文件????3499008??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplay.bsc
?????文件?????159864??2009-09-25?20:16??DIBDisplay\Debug\DIBDisplay.exe
?????文件?????500104??2009-09-25?20:16??DIBDisplay\Debug\DIBDisplay.ilk
?????文件??????24509??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplay.obj
?????文件????7067436??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplay.pch
?????文件?????640000??2009-09-25?20:16??DIBDisplay\Debug\DIBDisplay.pdb
?????文件???????8024??2009-07-08?20:41??DIBDisplay\Debug\DIBDisplay.res
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplay.sbr
?????文件??????39410??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplayDoc.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplayDoc.sbr
?????文件??????37081??2009-09-25?20:16??DIBDisplay\Debug\DIBDisplayView.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\DIBDisplayView.sbr
?????文件??????18452??2009-09-25?10:49??DIBDisplay\Debug\DibImage.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\DibImage.sbr
?????文件??????23895??2009-09-25?09:48??DIBDisplay\Debug\DIBPrcs.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\DIBPrcs.sbr
?????文件??????19766??2009-07-08?21:49??DIBDisplay\Debug\MainFrm.obj
?????文件??????????0??2009-07-08?21:49??DIBDisplay\Debug\MainFrm.sbr
?????文件?????106326??2009-07-08?21:49??DIBDisplay\Debug\StdAfx.obj
?????文件????1375966??2009-07-08?21:49??DIBDisplay\Debug\StdAfx.sbr
?????文件?????279552??2009-09-25?20:16??DIBDisplay\Debug\vc60.idb
............此處省略35個文件信息
評論
共有 條評論