本文共 2264 字,大约阅读时间需要 7 分钟。
//在Onpaint函数中加入如下代码 //----------给窗口设置背景图片---------------------------- CPaintDC dc(this); CRect myrect; GetClientRect(&myrect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP1); //IDB_BITMAP_TOOL是你自己的图对应的ID BITMAP bitmap; bmpBackground.GetBitmap(& bitmap); CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); dc.StretchBlt(0,0,myrect.Width(),myrect.Height(),&dcMem,0,0, bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);
一.设置主界面背景图片
1.首先准备两张Windows24位BMP(后缀为.bmp)的图片,找到创建的工程目录下的res文件夹,将图片复制粘贴到res文件夹下。
这里以美丽的精灵公主–丽芙·泰勒为背景。这里以Photoshop为工具将普通图片改为Windows下的24位图片。
(1)打开图像->图像大小,调整图像至合适大小。 (2)打开文件->存储为,将图片存储为.bmp的图片。 这样就修改图片格式成功了,当然也可以使用其他的图片编辑工具来修改。2.添加背景Bitmap资源。找到资源视图下的Dialog,右键->添加资源->选择Bitmap->导入,将res文件夹下的图片导入工程中。
导入成功后可以在Bitmap文件夹下看到名为IDB_BITMAP1的图片,以此方法导入另一张图片。3.找到XXXDlg.cpp下的OnPaint()函数,将else中的内容替换为如下内容。(注意注释掉原来的CDialog::OnPaint();)
else { //CDialog::OnPaint(); //添加代码对话框背景贴图 CPaintDC dc(this); 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);}
123456789101112131415161718运行程序即可看到如下:
二.设置子窗体背景图片
1.在子窗体下,右键->类向导,在消息中找到WM_PAINT函数,添加处理程序(即为OnPaint函数在此类中的重载)。 2.在child.cpp中找到OnPaint函数,添加如下代码。void Child::OnPaint()
{ CPaintDC dc(this); // device context for painting // TODO: 在此处添加消息处理程序代码 // 不为绘图消息调用 CDialogEx::OnPaint() CBitmap bitmap; //定义位图 bitmap.LoadBitmap(IDB_BITMAP2); //这个IDB_BITMAP1要自己添加 CBrush brush; brush.CreatePatternBrush(&bitmap); CBrush* pOldBrush = dc.SelectObject(&brush); dc.Rectangle(0, 0, 790, 650); //前两个为图片起始位置,后两个为图片终点位置,实际为图片的像素大小 dc.SelectObject(pOldBrush); }123456789101112 完成后的结果如下:
存在的一点问题:
设置主界面时的图片在OnPaint函数中自动适应窗体长宽,在设置子窗体时则是由自己来设置dc.Rectangle(0, 0, 790, 650)后两个参数来调节图片,以适应窗体。 原文:https://blog.csdn.net/qq_43524683/article/details/86498806