void cDefense::DrawAll() { HDC hDc = GetDC(m_hWnd);//获取客户区窗口,如果该值为NULL,GetDC则获整个屏幕的窗口。 HDC dcMem = CreateCompatibleDC(hDc);//该创建一个与设备兼容的窗口 HBITMAP hBitmap = CreateCompatibleBitmap(hDc, 700, 600);//创建一个兼容的位图 SelectObject(dcMem, hBitmap);//把一个对象(位图、画笔、画刷等)选入指定的窗口。新的对象代替同一类型的老对象。 //要把所有的图形绘制到dcMem上 DrawMap(dcMem); //把dcMem绘制到Dc上 BitBlt(hDc, 0, 0, 700, 600, dcMem, 0, 0, SRCCOPY); ReleaseDC(m_hWnd, hDc); DeleteObject(dcMem); DeleteObject(hBitmap); } void cDefense::DrawMap(HDC dcMem) { HDC dcTemp; dcTemp = CreateCompatibleDC(NULL); HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, L"images\maps\bg.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); SelectObject(dcTemp, hBitmap); BITMAP bitInfo; GetObject(hBitmap, sizeof(BITMAP), &bitInfo);//得到图像的信息储存到bitInfo中 BitBlt(dcMem, 0, 0, bitInfo.bmWidth, bitInfo.bmHeight, dcTemp, 0, 0, SRCCOPY); DeleteObject(dcTemp); DeleteObject(hBitmap); }