class CBmpDC { private: HDC m_hMemDC; HBITMAP m_hBitmap; int m_Width; int m_Height; int m_w; //场景宽 int m_h; //场景高 public: CBmpDC() { m_hMemDC=NULL; m_hBitmap=NULL; } ~CBmpDC() { if (m_hMemDC) ::DeleteDC(m_hMemDC); if (m_hBitmap) ::DeleteObject(m_hBitmap); } int Width() { return m_Width; } int Height() { return m_Height; } inline GetDC(){ return m_hMemDC;} BOOL LoadImage(UINT res, HINSTANCE hInst) { return LoadImage(MAKEINTRESOURCE(res),hInst); } //创建一个节点缓冲 BOOL LoadImage(const char *lpFileName, HINSTANCE hInst=NULL) //HWND hWnd, int new_w, int new_h) { if (m_hMemDC) ::DeleteDC(m_hMemDC); if (m_hBitmap) ::DeleteObject(m_hBitmap); //初始化一个设备 m_hMemDC=CreateCompatibleDC(0); if (m_hMemDC==NULL) return FALSE; SetBkMode(m_hMemDC,TRANSPARENT); //设置此设备的文本绘制模式为透明 m_hBitmap = (HBITMAP)::LoadImage(hInst, lpFileName, IMAGE_BITMAP, 0, 0, hInst?NULL:LR_LOADFROMFILE); //MAKEINTRESOURCE //m_hBitmap=(HBITMAP)LoadBitmap(hInst, lpFileName);// if (m_hBitmap==NULL) return FALSE; SelectObject (m_hMemDC, m_hBitmap); BITMAP bmp; if ( GetObject(m_hBitmap,sizeof(BITMAP),&bmp)!=sizeof(BITMAP) ) return FALSE; m_Width=bmp.bmWidth; m_Height=bmp.bmHeight; return TRUE; } BOOL DrawTo(HDC hdc, LPRECT lpRect) { return ::BitBlt (hdc, lpRect->left, lpRect->top, lpRect->right-lpRect->left, lpRect->bottom-lpRect->top, m_hMemDC, lpRect->left, lpRect->top, SRCCOPY) ; } };