MFC的一个对话框中怎样设置背景为一个图片

我在对话框中放了一个Picture Control,想把一个位图作为对话框背景,
在OnInitDialog()函数中写入这样的代码:
... ...
// 添加背景位图
((CStatic*)GetDlgItem(IDC_PICTURE))->SetBitmap(HBITMAP(m_bgBitmap));
运行结果没有出现那个位图,什么原因呢?
(m_bgBitmap为Dlg类成员变量,在类构造函数中就用m_bgBitmap.LoadBitmapA(IDB_BG_BITMAP);初始化了)
我能不能把一个位图放到Picture Box中,然后再把其他按钮之类控件放到它上边这样显示呢?

在MFC中给对话框中设置背景图片,方法有多种,这里整理了三种,具体操作如下:

方法一:
1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:
return (HBRUSH)m_brush;

方法二:
把下面这段代码加进OnPaint()里就行了
CPaintDC dc(this);
CBitmap bitmap;
bitmap.LoadBitmap(IDB_BITMAP1); //这个IDB_BITMAP1要自己添加
CBrush brush;
brush.CreatePatternBrush(&bitmap);
CBrush* pOldBrush = dc.SelectObject(&brush);
dc.Rectangle(0,0,200,200); // 这些参数可以调整图片添加位置和大小
dc.SelectObject(pOldBrush);

方法三:使用StretchBlt()函数,具有图像自适应窗体功能
CPaintDC dc(this);
CBitmap m_bmpBK;
m_bmpBK.LoadBitmap(IDB_BITMAP1);
CRect rect;
GetClientRect(&rect);//获得目标尺寸,即窗口客户区的坐标
BITMAP bitMap;//位图结构体
m_bmpBK.GetBitmap(&bitMap);//获得原图片尺寸
CDC dcMem; //目标DC
dcMem.CreateCompatibleDC(&dc); //创建与dc兼容的内存DC
dcMem.SelectObject(&m_bmpBK);//将位图对象m_bmpBK选入内存DC
dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY);
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-10-04
您好:
我觉得应该这样 ,把你需要的位图作为背景画刷
TestDlg.h中
CBrush m_brBk;//在public中定义

TestDlg.cpp中
在初始化函数OnInitDialog()中加入:
BOOL CTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();
CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP2);
m_brBk.CreatePatternBrush(&bmp);
bmp.DeleteObject();
return TRUE; // return TRUE unless you set the focus to a control
}

在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下:
HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

if (pWnd == this)
{
return m_brBk;
}
return hbr;
}本回答被提问者采纳
第2个回答  2019-02-04
你建了一个基本对话框,然后已经有了一确定按钮,接下来双击这个确定按钮添加一个消息响应函数,单你点击这个按钮时就会调用这个函数
void
cxxxxdlg::onok()
{
//
todo:
add
extra
validation
here
}
第二步:你选择insert菜单
里的resour
选项-->
dialog
-->
new
就新建一个对话框,然后双击该对话框会提示你为这个对话框创建一个类,你输入类名就可以了,这样一个新的对话框类(例如:cmynewdlg)就新建完成。
第三步:在你刚才添加确定按钮消息函数的.cpp文件中包含刚才新建类的头文件(例如#include
"mynewdlg.h")
,在onok函数中添加如下代码
void
cxxxxdlg::onok()
{
//
todo:
add
extra
validation
here
cmynewdlg
dlg;
//
对话框类对象
dlg.domodal();
//
弹出新建对话框
}
点击确定按钮就马上会弹出你刚才新建的对话框,整个过程就是这样了。
希望能帮到你。
第3个回答  推荐于2017-09-05
  参考思路:
  1、直接用图像控件是可以导入位图bitmap的;
  2、将Picture控件的属性做两点设定;
  (1).type设为bitmap;
  (2).Real Size Image设为true;
  3、然后,导入位图即可。
第4个回答  2008-08-20
Picture Control的属性里面有个(TYPE)类型,默认是Frame,你把他改成Bitmap,然后上面那个IMAGE属性栏就可以选择了,你在里面选择你所导入的bitmap图片,就显示出来了
---------------------------------------------------------------
至于你的补充问题,你把图片控件和你所放的按钮控件的属性有一项Transparent都设置为TRUE就可以重叠显示了,不用Picture Box

MFC的一个对话框中怎样设置背景为一个图片
1、声明成员变量CBrush m_brush;2、在InitDialog中添加代码:CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP1); \/\/这个IDB_BITMAP1要自己添加 m_brush.CreatePatternBrush(&bmp);3、重载对话框的OnCtlColor,改最后的返回值:return (HBRUSH)m_brush;方法二:把下面这段代码加进OnPaint()里就行了 CPa...

怎么给MFC的对话框加背景图片
1、新建MFC应用程序。2、在应用程序中,选择基于对话框,其他保持默认即可。3、右击项目,选择添加-资源。4、在添加资源对话框中,点击导入,选择要作为背景的图片。5、在工具箱找到Picture控件,托到界面中。6、在界面上点击选中Picture控件,然后在属性的Type下拉框中,选择Bitmap。7、再在Picture控件的...

mfc 怎样给dialog 资源插入背景图片啊
OnPaint可以自己添加的。

MFC中,对话框的背景如何更换?
在上面添加一个 PICTURE 控件 picture 右键属性 在TYPE中选 Bitmap 然后再Image 中选择你要做背景的图片 注:Bitmap的图片可以按CTRL+R 选Bitmap然后选 import 添加~控件框如果没有的话在菜单栏空白处右键 选Control (中文叫做控件)祝你能更换顺利~!

...但不知道如何在MFC对话框中插入背景图片,把这图片用于登录界面的背景...
背景图像加载很简单,你只需要做以下几步即可(假设你的登陆界面对话框类名叫“CLoginDlg”):(1)菜单“Insert”->"Resource",选择Bitmap,然后点“Import...”,选择你的背景图像,然后假设该资源ID为“IDB_BITMAP1”;(2)在LoginDlg.h下声明一个CBitmap m_BKbitmap;(3)在LoginDlg....

MFC基于单文本框如何添加音乐,图片
首先要为对话框添加消息映射,主要是:BEGIN_MESSAGE_MAP(CXXXDlg, CDialog)ON_WM_ERASEBKGND()\/\/添加这里 END_MESSAGE_MAP()然后在相关代码区域添加代码:在资源里载入图片,默认id:IDB_BITMAP1 BOOL CHelpDlg::OnEraseBkgnd(CDC* pDC){ \/ \/\/不使用背景图片时启用,否则失效。START \/\/背景色 BO...

VC6.0MFC中怎样给对话框添加背景图片?
你添加的这个不是bmp位图文件 附加位图的时候,不能单单是把文件后缀改成.bmp 你可以用画图,或者其他看图工具,打开图片后另存为bmp格式 再插入的时候,就会变成位图附加到项目中了 附加了以后,图片的id会变成IDB_BITMAP1,你可以改成自己想要的名字 ...

MFC中,如何给基本对话框加上JPG格式的背景图片
mfc只能识别bmp的图片,你可以把jpg图片转成bmp格式的,注:用windows画图就可以,然后再资源里面添加位图资源,在对话框里放一个位图对话框,设置位图为你的图片,设置属性为透明即可。

单文档的主框架中怎么添加背景图片?
一、 使用MFC AppWizard向导创建一个多文档窗口应用程序 1、在VC的“File”菜单中单击[New],弹出一“New”对话框。在“Projects”页中选择“MFC AppWizard [exe]”,在“Project name”编辑框中输入“DrawBackground”,按[OK]按钮,退出“New”对话框。2、在“MFC AppWizard step 1”对话框到“...

MFC怎么将文件内容显示到对话框 和给对话框 添加背景图片
不错,就是使用CListCtrl 控件,可以说是表格控件,行列,把对应内容放置于各自的单元格即可 分行分列最好,就像我们查看文件夹文件列表中的详细信息文件列表视图 网络搜索一个如何使用CListCtrl 的样例代码研究 用edit control怪怪的,文件多行的话,一般用于文本输出,可以用RichTextControl 也就是丰富多彩...

相似回答