新建一个单文档的MFC工程
复制一张位图至项目文件的res文件夹中
在项目工作区资源视图中"import'资源文件夹中的位图,ID为:IDB_BITMAP1
在View类的OnDraw函数中代码如下:
void CGrapView::OnDraw(CDC* pDC)
{
CGrapDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
//1.加载位图
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
//定义BITMAP结构类型的对象
BITMAP bmp;
//将当前位图的信息放入到位图结构体对象中
bitmap.GetBitmap(&bmp);
CDC dc;
//2.创建和当前pDC兼容的DC
dc.CreateCompatibleDC(pDC);
//3.将位图选入DC
dc.SelectObject(&bitmap);
//4.将dc中的位图拷贝到目的dc
CRect rect;
GetClientRect(&rect);
//原图大小1:1拷贝
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);
//充满客户区大小拷贝
//pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,
bmp.bmWidth,bmp.bmHeight,SRCCOPY);
// TODO: add draw code for native data here
}
贴图时会先擦除背景,也可以在OnEraseBkgnd()消息响应函数中实现
效果更好,改变窗体大小时闪烁要好些
BOOL CGraphicView::OnEraseBkgnd(CDC* pDC)
{
// TODO: Add your message handler code here and/or call default
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1);
BITMAP bmp;
bitmap.GetBitmap(&bmp);
CDC dcCompatible;
dcCompatible.CreateCompatibleDC(pDC);
dcCompatible.SelectObject(&bitmap);
CRect rect;
GetClientRect(&rect);
//
pDC->BitBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,0,0,SRCCOPY);
pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcCompatible,
0,0,bmp.bmWidth,bmp.bmHeight,SRCCOPY);
return TRUE;
//要返回TRUE
//
return CView::OnEraseBkgnd(pDC);
//这里要注释掉
}