资源简介
该程序能有效实现图像的拼接,使用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语言的五子棋全套
评论
共有 条评论