www.pudn.com > expressionsb.rar > DIB.h
// DIB.h: interface for the CDIB class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_DIB_H__E2798D01_5370_4977_B88C_6C812B93B394__INCLUDED_)
#define AFX_DIB_H__E2798D01_5370_4977_B88C_6C812B93B394__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define DIB_HEADER_MARKER ((WORD)('M'<<8)|'B') //bfType="BM"
#define IS_WIN30_DIB(lpbi) (*(LPDWORD)lpbi==sizeof(BITMAPINFOHEADER))
#define PALVERSION 0x300
//计算矩形区域的宽度
#define RECTWIDTH(lpRect) ((lpRect)->right-(lpRect)->left)
//计算矩形区域的高度
#define RECTHEIGHT(lpRect) ((lpRect)->bottom-(lpRect)->top)
////计算图像实际的宽度,以字节计算,输入:位
#define WIDTHBYTES(bits) (((bits)+31)/32*4)
//#define PI 3.1415926
const DOUBLE PI=3.1415926;
DECLARE_HANDLE(HDIB); //声明HDIB句柄
class CDIB
{
public:
BOOL ScaleNormal(CSize toSize);
BOOL SaveDIB(HDIB hDib,CFile& file);
BOOL SaveDIB(LPCTSTR lpszPathName);
CDIB(CDIB* pDIB,int _left,int _top,int _right,int _bottom);
CDIB(CDIB* pDIB,FLOAT *pGabor, CSize _size, BOOL _changePal=FALSE);
CSize GetDIBSize();
WORD PaletteSize(LPSTR lpbi);
LPSTR FindDIBBits(LPSTR lpbi);
BOOL PaintDIB(HDC hDC,LPRECT lpDCRect);
HDIB GetHDIB() const;
BOOL CreateDIBPalette(HDIB hDIB,CPalette *cPal);
WORD NumColors(LPSTR lpbi);
CSize GetDIBSize(LPSTR lpDIB);//返回图像尺寸,而不是实际存储尺寸
HDIB CreateDIB(LPCTSTR lpPathName);
HDIB ReadDIBFile(CFile& file);
CDIB(LPCTSTR lpPathName);
CDIB();
virtual ~CDIB();
private:
HDIB m_hDIB;//DIB图像句柄
CPalette* m_pPal; //主要用于显示图像
CSize m_sizeDIB;//DIB图像的尺寸(长×宽,像素),而不是实际存储尺寸
protected:
void SetEmpty();
};
#endif // !defined(AFX_DIB_H__E2798D01_5370_4977_B88C_6C812B93B394__INCLUDED_)