資源簡介
該程序能有效實現圖像的拼接,使用VC++實現,絕對可靠。

代碼片段和文件信息
//?Dib.cpp:?implementation?of?the?CDib?class.
//
//////////////////////////////////////////////////////////////////////
#include?“stdafx.h“
#include?“Dib.h“
#include?“windowsx.h“
#ifdef?_DEBUG
#undef?THIS_FILE
static?char?THIS_FILE[]=__FILE__;
#define?new?DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
//?Construction/Destruction
//////////////////////////////////////////////////////////////////////
CDib::CDib(const?char*?dibFileName)
{
??strcpy(m_fileNamedibFileName);
??LoadFile();
}
/*************************************************************************
?*
?*?\函數名稱:
?*???CDib()
?*
?*?\輸入參數:
?*?CSize size -?位圖尺寸
?*?int nBitCount -?象素位數
?*
?*?\返回值:
?*???無
?*
?*?\說明:
?*???構造函數
?*???根據給定的位圖尺寸和象素位數構造CDib對象,并對信息頭和調色板分配內存
?*???但并沒有給位圖數據分配內存
?*
?************************************************************************
?*/
CDib::CDib(CSize?size?int?nBitCount)
{
????DWORD?totalbytes;
totalbytes=sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)+(size.cx*nBitCount+31)/32*4*size.cy;
BYTE*?pDib=(BYTE*)GlobalAllocPtr(GMEM_MOVEABLEtotalbytes);
????m_pBitmapInfo=(BITMAPINFO*)pDib;
????m_pBitmapInfoHeader=(BITMAPINFOHEADER*)pDib;
m_pBitmapInfoHeader->biSize =?sizeof(BITMAPINFOHEADER);
m_pBitmapInfoHeader->biWidth =?size.cx;
m_pBitmapInfoHeader->biHeight =?size.cy;
m_pBitmapInfoHeader->biPlanes =?1;
m_pBitmapInfoHeader->biBitCount =?nBitCount;
m_pBitmapInfoHeader->biCompression?=?BI_RGB;
m_pBitmapInfoHeader->biSizeImage =?0;
m_pBitmapInfoHeader->biXPelsPerMeter?=?0;
m_pBitmapInfoHeader->biYPelsPerMeter?=?0;
m_pBitmapInfoHeader->biClrUsed =?0;
????m_pRGB=(RGBQUAD*)(pDib+m_pBitmapInfoHeader->biSize);
m_numberOfColors=GetNumberOfColors();
if(m_pBitmapInfoHeader->biClrUsed==0)
m_pBitmapInfoHeader->biClrUsed=m_numberOfColors;
DWORD?colorTableSize=m_numberOfColors*sizeof(RGBQUAD);
????m_pData=pDib+m_pBitmapInfoHeader->biSize+colorTableSize;
????m_pBitmapInfoHeader->biSizeImage=GetSize();
????m_valid=TRUE;
}
CDib::~CDib()
{
????GlobalFreePtr(m_pBitmapInfo);
}
void?CDib::LoadFile()
{
CFile?dibFile(m_fileNameCFile::modeRead);
BITMAPFILEHEADER?bmf;
dibFile.Read((void*)&bmfsizeof(BITMAPFILEHEADER));
if(bmf.bfType==0x4d42)
{
DWORD?fileLength=dibFile.GetLength();
DWORD?size=fileLength-sizeof(BITMAPFILEHEADER);
BYTE*?pDib=(BYTE*)GlobalAllocPtr(GMEM_MOVEABLEsize);
????????dibFile.Read((void*)pDibsize);
dibFile.Close();
m_pBitmapInfo=(BITMAPINFO*)pDib;
????????m_pBitmapInfoHeader=(BITMAPINFOHEADER*)pDib;
????????m_pRGB=(RGBQUAD*)(pDib+m_pBitmapInfoHeader->biSize);
m_numberOfColors=GetNumberOfColors();
if(m_pBitmapInfoHeader->biClrUsed==0)
????????????m_pBitmapInfoHeader->biClrUsed=m_numberOfColors;
DWORD?colorTableSize=m_numberOfColors*sizeof(RGBQUAD);
????????m_pData=pDib+m_pBitmapInfoHeader->biSize+colorTableSize;
????????m_pBitmapInfoHeader->biSizeImage=GetSize();
m_valid=TRUE;
}
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????490934??2004-03-26?08:25??拼接\da.bmp
?????文件???????5910??2004-03-25?16:59??拼接\Dib.cpp
?????文件???????1064??2004-05-13?21:12??拼接\Dib.h
?????文件??????28580??2004-05-13?19:53??拼接\ImgMatch.aps
?????文件???????2684??2004-05-13?21:15??拼接\ImgMatch.clw
?????文件???????4291??2004-03-18?10:09??拼接\ImgMatch.cpp
?????文件???????4977??2004-03-18?17:16??拼接\ImgMatch.dsp
?????文件????????539??2004-03-18?10:01??拼接\ImgMatch.dsw
?????文件???????1378??2004-03-18?10:01??拼接\ImgMatch.h
?????文件?????148480??2004-05-13?21:24??拼接\ImgMatch.ncb
?????文件??????57856??2004-05-13?21:24??拼接\ImgMatch.opt
?????文件????????250??2004-05-13?21:24??拼接\ImgMatch.plg
?????文件??????11294??2004-04-29?10:00??拼接\ImgMatch.rc
?????文件??????29690??2004-05-13?21:18??拼接\ImgMatchDoc.cpp
?????文件???????2376??2004-05-13?21:16??拼接\ImgMatchDoc.h
?????文件???????7611??2004-04-29?10:54??拼接\ImgMatchView.cpp
?????文件???????2021??2004-03-19?11:22??拼接\ImgMatchView.h
?????文件???????3420??2004-03-24?11:21??拼接\MainFrm.cpp
?????文件???????1603??2004-03-24?11:21??拼接\MainFrm.h
?????文件???????4359??2004-03-18?10:01??拼接\ReadMe.txt
?????文件???????1078??2004-03-18?10:01??拼接\res\ImgMatch.ico
?????文件????????400??2004-03-18?10:01??拼接\res\ImgMatch.rc2
?????文件???????1078??2004-03-18?10:01??拼接\res\ImgMatchDoc.ico
?????文件???????1078??2004-03-18?10:01??拼接\res\Toolbar.bmp
????..A.SH.?????????9??2006-10-08?15:37??拼接\res\_desktop.ini
?????文件????????875??2004-04-29?10:00??拼接\Resource.h
?????文件???????6348??2004-04-29?10:54??拼接\SecondView.cpp
?????文件???????1579??2004-03-19?11:22??拼接\SecondView.h
?????文件????????210??2004-03-18?10:01??拼接\StdAfx.cpp
?????文件???????1054??2004-03-18?10:01??拼接\StdAfx.h
............此處省略10個文件信息
- 上一篇:c語言編寫的置換密碼源代碼
- 下一篇:大作業C語言的五子棋全套
評論
共有 條評論