CBitmap bitmap;
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CBitmap* pOldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC); ///建立与显示设备兼容的内存设备场境
bitmap.LoadBitmap(IDB_BITMAP1); ///取出位图资源
pOldBitmap=MemDC.SelectObject(&bitmap); ///将位图选入内存场境
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight , &MemDC,
0, 0, SRCCOPY); ///显示它
MemDC.SelectObject(pOldBitmap);
执行报异常
BITMAP bmpInfo;
bitmap.GetBitmap(&bmpInfo);
CBitmap* pOldBitmap;
CDC MemDC;
MemDC.CreateCompatibleDC(pDC); ///建立与显示设备兼容的内存设备场境
bitmap.LoadBitmap(IDB_BITMAP1); ///取出位图资源
pOldBitmap=MemDC.SelectObject(&bitmap); ///将位图选入内存场境
CRect rect;
GetClientRect(&rect);
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2; pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight , &MemDC,
0, 0, SRCCOPY); ///显示它
MemDC.SelectObject(pOldBitmap);
执行报异常
0, 0, SRCCOPY); 问题出在bmpInfo.bmWidth, bmpInfo.bmHeight 这里,这两个必须是LP而不是DP
插入下面代码试试
CPoint size(bmpInfo.bmWidth, bmpInfo.bmHeight);
pDC->DPtoLP(&size);