1、 添加选择Bitmap导入图片,图片文件最好放在项目res目录中,同时是BMP格式。上传后的图片在资源视图,命名为IDB_BITMAP_M_BACK。
2、在cpp的C***Dlg::OnPaint()函数下添加如下代码
void C***Dlg::OnPaint()
{CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码 //获取控件在对话框上的位置,*IDC_STATIC_ENERGY_S为需添加背景图片的控件*CRect rect;GetDlgItem(IDC_STATIC_ENERGY_S)->GetWindowRect(&rect);//获取控件的屏幕坐标ScreenToClient(&rect); //转换为对话框上的客户坐标CBitmap bmpBackground; bmpBackground.LoadBitmap(IDB_BITMAP_M_BACK); //加载位图 BITMAP bitmap; bmpBackground.GetBitmap(&bitmap); //生成BITMAPCDC dcMem; dcMem.CreateCompatibleDC(&dc); //选入DC CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground); //用客户区的DC绘制所生成的BITMAP,并适应为窗口大小 dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY); // 不为绘图消息调用 CDialogEx::OnPaint()
}
如果是主程序的cpp文件中已有OnPaint函数,则修改else部分代码:
void C***Dlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{// CDialogEx::OnPaint(); //注释该语句:防止重复调用重画函数***在这里添加上面那段代码***}
}
运行效果: