可在OnPaint,OnDraw,OnEraseBkgnd实现
OnPaint中
CDC dcMem;
dcMem.CreateCompatibleDC(&dc); //创建内存设备上下文,与另一个设备上下文匹配。可以用它在内存中准备图像
CBitmap bmpBackground;
bmpBackground.LoadBitmap(资源里Bitmap的ID); //从应用的可执行文件中加载一个命名的位图资源来初始化位图对象
BITMAP bitMap;
bmpBackground.GetBitmap(&bitMap); //用位图信息填充BITMAP结构
dcMem.SelectObject(&bmpBackground);
CRect rect;
GetClientRect(&rect);//获得用户区rect (0,0,rect.Width(),rect.Height())
dc.StretchBlt(X1,Y1,X2,Y2,&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
OnDraw中
CBitmap bitmap;
bitmap.LoadBitmap(资源里Bitmap的ID);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
OnEraseBkgnd中//此函数是消息函数自己添加WM_ERASEBKGND
CBitmap bitmap;
bitmap.LoadBitmap(资源里Bitmap的ID);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
***重点return TRUE;
BOOL StretchBlt(
int x,
int y,
int nWidth,
int nHeight,
CDC* pSrcDC,
int xSrc,
int ySrc,
int nSrcWidth,
int nSrcHeight,
DWORD dwRop
)
返回值:如果位图已经绘制,则返回非零值,否则为0。
参数:
x | 目标矩形左上角的X逻辑坐标。 | |||||||||||||||||||||||||||||||||||||||||||||
y | 目标矩形左上角的Y逻辑坐标。 | |||||||||||||||||||||||||||||||||||||||||||||
nWidth | 目标矩形的宽度(逻辑单位)。 | |||||||||||||||||||||||||||||||||||||||||||||
nHeight | 目标矩形的高度(逻辑单位)。 | |||||||||||||||||||||||||||||||||||||||||||||
pSrcDC | 指定源设备上下文。 | |||||||||||||||||||||||||||||||||||||||||||||
xSrc | 源矩形左上角的X逻辑坐标。 | |||||||||||||||||||||||||||||||||||||||||||||
ySrc | 源矩形左上角的Y逻辑坐标。 | |||||||||||||||||||||||||||||||||||||||||||||
nSrcWidth | 源矩形的宽度(逻辑单位)。 | |||||||||||||||||||||||||||||||||||||||||||||
nSrcHeight | 源矩形的高度(逻辑单位)。 | |||||||||||||||||||||||||||||||||||||||||||||
dwRop | 指定光栅操作。光栅操作模式说明了GDI是如何组合输出操作中的颜色,包括当前画刷、可能的源位图和目标位图。可以为下列值之一:
|