1 / 35
文档名称:

图像处理函数.doc

格式:doc   大小:284KB   页数:35页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

图像处理函数.doc

上传人:文库旗舰店 2018/6/18 文件大小:284 KB

下载得到文件列表

图像处理函数.doc

文档介绍

文档介绍:获取位图尺寸
字体大小:大| 中| 小 2008-01-18 17:13 - 阅读:211 - 评论:0
从 CBitmap类对象中获取位图尺寸我们可用GetBitmap()函数。 
// 变量bitmap是一个CBitmap类对象
BITMAP bm;
( &bm );
bmWidth = ;
bmHeight = ;
如果你有一个 HBITMAP句柄,你可以将它附加到一个CBitmap类对象上,再用上述方法
获取尺寸
// 变量hBmp是一个HBITMAP句柄
BITMAP bm;
::GetObject( hBmp, sizeof( bm ), &bm );
bmWidth = ;
bmHeight = ;
从BMP位图文件中获取位图尺寸可用下述方法。
CFile file;
// sBMPFileName是BMP位图文件名
if( !( sBMPFileName, CFile::modeRead) )
return ;
BITMAPFILEHEADER bmfHeader;
// 读文件头
if (((LPSTR)&bmfHeader, sizeof(bmfHeader))
    != sizeof(bmfHeader))
    return ;
// 确定文件类型标记’BM’
if ( != ((WORD) (’M’ << 8) | ’B’))
return ;
BITMAPINFOHEADER bmiHeader;
if (((LPSTR)&bmiHeader, sizeof(bmiHeader))
    != sizeof(bmiHeader))
    return ;
int bmWidth = ;
int bmHeight = ;
Visual C++ MFC中没有提供一个专门的类来处理DIB位图,因此,为了方便地使用位图文件,我们有必要派生一个CDib类。类的源代码如下:
(1) CDib类的声明
// :类CDib声明头文件
#ifndef __DIB_H__
#define __DIB_H__
#include <>
class CDib
{
public:
CDib();
~CDib();
BOOL Load( const char * );
BOOL Save( const char * );
BOOL Draw( CDC *, int nX = 0, int nY = 0, int nWidth = -1, int nHeight = -1, int mode = OPY);
BOOL SetPalette( CDC * );
private:
CPalette m_Palette;
unsigned char *m_pDib, *m_pDibBits;
DWORD m_dwDibSize;
BITMAPINFOHEADER *m_pBIH;
RGBQUAD *m_pPalette;
int m_nPaletteEntries;
};
#endif
(2) CDib类的实现
// :类CDib实现文件
#include ""
#include ""
CDib::CDib()
{
m_pDib = NULL;
}
CDib::~CDib()
{
// 如果位图已经被加载,释放内存
if (m_pDib != NULL)
delete []m_pDib;
}
下面这个函数非常重要,其功能为加载位图,类似于CBitmap类的LoadBitmap函数:
BOOL CDib::Load(const char *pszFilename)
{
CFile cf;
// 打开位图文件
if (!(pszFilename, CFile::modeRead))
return (FALSE);
// 获得位图文件大小,并减去BITMAPFILEHEADER的长度
DWORD dwDibSize;
dwDibSize = () - sizeof(BITMAPFILEHEADER);
// 为DIB位图分配内存
unsi