界面加载位图

来源:互联网 发布:python string转list 编辑:程序博客网 时间:2024/06/07 00:23
新建一个单文档的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);   //这里要注释掉
}

原创粉丝点击