Hdib.h
上传用户:cjd055
上传日期:2013-04-01
资源大小:608k
文件大小:3k
源码类别:

交通/航空行业

开发平台:

Visual C++

  1. // HDib.h: interface for the CDib class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. /////////////////////////////////////
  5. //     CDib 1999.12.30 version     //
  6. //           By HuYu               //
  7. /////////////////////////////////////
  8. #if !defined(AFX_HDIB_H__EF233C76_B7AF_11D3_9462_0000000038B2__INCLUDED_)
  9. #define AFX_HDIB_H__EF233C76_B7AF_11D3_9462_0000000038B2__INCLUDED_
  10. #if _MSC_VER > 1000
  11. #pragma once
  12. #endif // _MSC_VER > 1000
  13. #include "fstream.h"
  14. #include "stdio.h"
  15. #define PALVERSION   0x300   //调色板版本
  16. #define RECTWIDTH(lpRect)     ((lpRect)->right - (lpRect)->left)
  17. #define RECTHEIGHT(lpRect)    ((lpRect)->bottom - (lpRect)->top)
  18. #define WIDTHBYTES(bits)    (((bits) + 31) / 32 * 4)
  19. /////////////////////////////////////
  20. //     CDib 1999.12.30 version     //
  21. //           By HuYu               //
  22. /////////////////////////////////////
  23. class CDib  
  24. {
  25. /***********************************/
  26. /***********************************/
  27. /**            成员变量:         **/
  28. /***********************************/
  29. /***********************************/
  30. private:
  31. HPALETTE m_hPal;     //调色板类Cpalette的句柄;
  32. public:
  33. CString arcFileName;  //图像文档名;
  34. BYTE * m_Buffer;     //图像备份内存指针;
  35. BYTE * m_Buffer1;     //图像备份内存映象指针;
  36. RGBQUAD * m_Quad;    //彩色表指针;
  37. DWORD m_BmpLoaded;  //取值True或False;
  38. BITMAPFILEHEADER m_BmpFH;  //bmp文件头结构;
  39. BITMAPINFO * m_BmpInfo;  //bmp信息头指针;
  40. //位图数据:
  41. DWORD Width;//位图宽度(像素);
  42. DWORD Height;//位图高度(像素);
  43. DWORD BPP;//位图色彩深度;
  44. DWORD BufferSize;//位图数据区尺寸(字节);
  45. DWORD Bpl;//位图每一行占据的字节数;
  46. DWORD NumberOfColors;//调色板中颜色数目;
  47.     WORD BmpMarker;//位图标识;
  48. /***********************************/
  49. /***********************************/
  50. /**            成员函数:         **/
  51. /***********************************/
  52. /***********************************/
  53. private:
  54. BOOL CreatePalette();
  55. DWORD PaletteSize();
  56. void CalBmpData();
  57. public:
  58. BOOL GetRedImg();
  59. BOOL GetGreenImg();
  60. BOOL GetBlueImg();
  61. void restoreimage();
  62. BITMAPINFOHEADER GetImageInfo(LPCTSTR fn, DWORD &w, DWORD &h);
  63. void Sort(DWORD &x0,DWORD &x1);
  64. BOOL Draw(HDC hDC,LPRECT rcDest,LPRECT rcSrc);
  65. void SetBmpMarker(DWORD b='B',DWORD m='M');
  66. BOOL PickBitmapToFile(LPCTSTR fn,DWORD xt,DWORD yt,DWORD xb,DWORD yb);
  67. //根据输入的像素位置提取位图数据:
  68. //根据像素位置获取在内存中的位置;
  69. BYTE * FindPos(DWORD x,DWORD y);
  70. void  Resize(int sz);
  71. BYTE * GetBuffer();//获取内存指针;
  72. void   Free();//释放所有内存;
  73. BOOL   SaveBmp(LPCTSTR fn);
  74. BOOL   LoadBmp(LPCTSTR fn);
  75. CDib();
  76. virtual ~CDib();
  77. protected:
  78. };
  79. #endif // !defined(AFX_HDIB_H__EF233C76_B7AF_11D3_9462_0000000038B2__INCLUDED_)