www.pudn.com > 人体步态跟踪识别bate版.rar > Cdib.h


// cdib.h 声明CDib类 
 
#ifndef _INSIDE_VISUAL_CPP_CDIB 
#define _INSIDE_VISUAL_CPP_CDIB 
 
class CDib : public CObject 
{ 
	DECLARE_SERIAL(CDib) 
 
public: 
	HBITMAP m_hBitmap; 
	LPBYTE m_lpDIBits;  // DIB位的起始位置 
	LPBITMAPINFOHEADER m_lpBMPHdr; //包含BITMAPINFOHEADER信息 
	LPVOID m_lpvColorTable;//颜色表信息 
	 
private: 
	HGLOBAL m_hGlobal; // 释放窗口或分配内存 
	DWORD m_dwImageSize; //非BITMAPINFOHEADER或BITMAPFILEHEADER的位 
	int m_nColorEntries;//颜色表项的个数 
	 
	HANDLE m_hFile; 
	HANDLE m_hMap; 
	LPVOID m_lpvFile; 
	HPALETTE m_hPalette; 
 
public: 
	CPoint m_Dest;//目的矩形域的左上角坐标 
	CSize m_DestSize;//显示矩形的宽度和高度 
	CPoint m_Src;//原矩形左下角坐标 
	CSize m_SrcSize;//原矩形宽度和高度 
 
public: 
	CDib(); 
	CDib(CSize size, int nBitCounts);	//给BITMAPINFOHEADER赋初值  
	~CDib(); 
	BOOL AllotDibMemory(LPVOID lpvMemory);// 
	BOOL CompressDib(CDC* pDC, BOOL BitsiCompress = TRUE); // FALSE意味着减压// 
	void ComputeImage();// 
	void ComputePaletteSize(int nBitCounts);// 
	BOOL CopyMapFile(const char* strPathname);// 
	HBITMAP CreateBitmap(CDC* pDC);// 
	HBITMAP CreateSection(CDC* pDC = NULL);// 
	void InitDestroy(); 
	BOOL Display(CDC* pDC);  // 显示图像 
	int GetHeaderSize()// 
		{return sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * m_nColorEntries;}// 
	int GetHeight();// 
	int GetImageSize() {return m_dwImageSize;}// 
	int GetWidth();// 
	BOOL ReadFile(CFile* pFile); 
	BOOL ReadSection(CFile* pFile, CDC* pDC = NULL);// 
	void ReleaseMapFile();// 
	void Serialize(CArchive& ar); 
	BOOL SetMapFile(const char* strPathname, BOOL bSharing = FALSE);// 
	BOOL SetLogPalette(CDC* pDC);// 
	BOOL SetWinPalette();// 
	UINT UseLogPalette(CDC* pDC);// 
	BOOL WriteFile(CFile* pFile); 
	 
}; 
#endif // _INSIDE_VISUAL_CPP_CDIB