用MFC显示两张位图
一张作为背景,另一张放在背景上,如坐标系上放一个空心的园,求高手解答 mfc
[解决办法]
内存DC
CreateCompatibleDC
[解决办法]
类似于这样的
case(WM_PAINT):
{
PAINTSTRUCT ps;
CDC *pDC = BeginPaint(&ps);
//客户区大小
CRect rcClient;
GetClientRect(rcClient);
int nWidth = rcClient.Width();
int nHeight = rcClient.Height();
CDC memDC; memDC.CreateCompatibleDC(pDC); //兼容DC
CBitmap bitMap; bitMap.LoadBitmap(IDB_BKIMAGE); //背景图片
CBitmap *pOldbmp = memDC.SelectObject(&bitMap); //位图选人内存DC
BITMAP bmpInfo; bitMap.GetBitmap(&bmpInfo); //获取背景图片信息
pDC->SetStretchBltMode(HALFTONE);//半色调
pDC->StretchBlt(0, 0, nWidth, nHeight, //目标尺寸
&memDC, //源DC
0, 0, bmpInfo.bmWidth, bmpInfo.bmHeight, //源尺寸
SRCCOPY); //贴背景图/缩放到客户区
//绘前景图片
bitMap.DeleteObject();
bitMap.LoadBitmap(IDB_BITMAP1);
bitMap.GetBitmap(&bmpInfo);
pDC->BitBlt(100, 100, bmpInfo.bmWidth, bmpInfo.bmHeight,
&memDC,
0, 0,
SRCCOPY);
//结束清理工作
memDC.SelectObject(pOldbmp); //恢复位图句柄
memDC.DeleteDC(); //删除内存DC
bitMap.DeleteObject(); //内存位图
EndPaint(&ps);
return 0;
}