2025年3月24日 星期一 甲辰(龙)年 月廿三 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > VC/VC++

给MFC对话框加背景图

时间:01-16来源:作者:点击数:50

方式一:

1、把你的图包含到程序的“Bitmap资源”里,提示说该资源使用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 

2、定位到  void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码   

  • else
  • {
  • //CDialog::OnPaint();//要禁止这个调用
  • CPaintDC dc(this);
  • CRect rect;
  • GetClientRect(&rect);
  • CDC dcMem;
  • dcMem.CreateCompatibleDC(&dc);
  • CBitmap bmpBackground;
  • bmpBackground.LoadBitmap(IDB_BITMAP);//IDB_BITMAP是你自己的图对应的ID
  • BITMAP bitmap;
  • bmpBackground.GetBitmap(&bitmap);
  • CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);
  • dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,
  • bitmap.bmWidth,bitmap.bmHeight搜索,SRCCOPY);
  • }

方式二:可直接读取本地路径下的*.bmp文件作为主窗体背景

  • //给窗体添加背景
  • CString sBmpFilePath = theApp->m_sExeFilePath+"\\Hospital_bg.bmp";
  • CFileFind cff;
  • BOOL bFindFlag = cff.FindFile(sBmpFilePath);
  • cff.Close();
  • if (bFindFlag)
  • {
  • CRect rc;
  • GetClientRect(&rc);
  • CPaintDC dc(this);
  • CDC dcMem;
  • dcMem.CreateCompatibleDC(&dc);//创建与内存兼容的DC
  • HBITMAP hBmp = (HBITMAP)LoadImage(NULL, sBmpFilePath, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
  • CBitmap bmpBackground;
  • bmpBackground.Attach(hBmp);
  • //bmpBackground.LoadBitmap(NULL);
  • BITMAP bitmap;
  • bmpBackground.GetBitmap(&bitmap);
  • CBitmap* pbmpPri = dcMem.SelectObject(&bmpBackground);
  • dc.SetStretchBltMode(COLORONCOLOR);// 若不设置这个模式,图片会严重失真
  • dc.StretchBlt(0,0,rc.Width(), rc.Height(), &dcMem,0,0,bitmap.bmWidth, bitmap.bmHeight, SRCCOPY);//拉伸图片使其全屏
  • }
  • else CDialog::OnPaint();
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门