本文共 1865 字,大约阅读时间需要 6 分钟。
例如:
BOOL CChildView::OnEraseBkgnd(CDC* pDC)
{ // TODO: 在此添加消息处理程序代码和/或调用默认值 CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); //获取对话框长宽 CDC dcBmp; //定义并创建一个内存设备环境 dcBmp.CreateCompatibleDC(&dc); //创建兼容性DC CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); //载入资源中图片 BITMAP m_bitmap; //图片变量 bmpBackground.GetBitmap(&m_bitmap); //将图片载入位图中 //将位图选入临时内存设备环境 CBitmap *pbmpOld = dcBmp.SelectObject(&bmpBackground); //调用函数显示图片StretchBlt显示形状可变 dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, SRCCOPY); return 0; //return CWnd::OnEraseBkgnd(pDC); }这是写的第一篇博客,就不求个多么的高深的技术问题了,就分享下我现在做毕设时遇见的问题和解决方法吧,希望对大家有所帮助。
问题:如何在视图窗口加载一张小图片作为背景,且充满整个View窗口呢?
方法:步骤如下
1.先创建或者添加一张资源图片(Bitmap),格式为bmp的,ID号 我这里为IDB_BITMAP1
2.在工程的View类里面定义两个变量:
public:
//为了给视图类画上背景 定义以下两个变量
CBitmap *m_bitmap; CBrush m_brushbackground;
3.在类的构造函数里添加如下代码:
m_bitmap = new CBitmap;
m_bitmap ->LoadBitmap(IDB_BITMAP1); m_brushbackground.CreatePatternBrush(m_bitmap);//这三行是为了给视图窗口加载背景4.打开类向导,用VS2012的右击这个C....View类然后选择类向导,在消息里面找到WM_ERASEBKGND,在右边点击添加处理程序,然后点编辑代码,ok。
5.然后在函数体添加代码如下:
CView::OnEraseBkgnd(pDC);
CDC dcMem; CClientDC dc(this); HBITMAP hbit; dcMem.CreateCompatibleDC(&dc); hbit = (HBITMAP)dcMem.SelectObject(m_bitmap); CRect rect; GetClientRect(&rect); pDC->FillRect(rect,&m_brushbackground);//充满整个客户区 //GetDC()->BitBlt(10,10,400,300,&dcMem,0,0,SRCCOPY);//加载到某个固定位置 //return CView::OnEraseBkgnd(pDC); return 0;切记:一定要把自动加上的return CView::OnEraseBkgnd(pDC);注释起来 要不然显示不出来背景的哦,然后写上return 0;
好了 ,这样应该就可以了 希望对你有用!!
转载地址:http://pcmws.baihongyu.com/