㈠ MFC中加载背景图片的问题
请在OnPaint();中绘制背景!
每次移动,系统会自动调用OnPaint();
所以就不会掉了。。。
㈡ MFC基本对话框中添加背景图片相关问题
添加背景最好是放在OnEraseBkgnd(CDC* pDC)函数中,在OnPaint中有可能会闪屏。
// CBitmapm_pBmp;
// BITMAPbm;
// CDCdcMem;
// m_pBmp.LoadBitmap(IDB_BITMAP_BG);
// m_pBmp.GetBitmap(&bm);//得到位图尺寸
// dcMem.CreateCompatibleDC(pDC);
// CBitmap*pOldBitmap=dcMem.SelectObject(&m_pBmp);
// pDC->SetStretchBltMode(COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
// pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
// dcMem.SelectObject(pOldBitmap);
// dcMem.DeleteDC();
用我这个代码
为什么要LoadBitmap 2次?
㈢ 想用MFC做个界面,但不知道如何在MFC对话框中插入背景图片,把这图片用于登录界面的背景
背景图像加载很简单,你只需要做以下几步即可(假设你的登陆界面对话框类名叫“CLoginDlg”):
(1)菜单“Insert”->"Resource",选择Bitmap,然后点“Import...”,选择你的背景图像,然后假设该资源ID为“IDB_BITMAP1”;
(2)在LoginDlg.h下声明一个CBitmap m_BKbitmap;
(3)在LoginDlg.cpp的构造函数中:m_BKbitmap.LoadBitmap(IDB_BITMAP1);
(4)在LoginDlg.cpp的OnPaint()函数中写上:
void CLoginDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
// Center icon in client rectangle
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;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
BITMAP bm;
CRect rect;
CDC dcMem;
m_BKbitmap.GetBitmap (&bm);
GetClientRect(&rect);
dcMem.CreateCompatibleDC (&dc);
CBitmap *oldbitmap=dcMem.SelectObject (&m_BKbitmap);
dc.BitBlt (0,0,bm.bmWidth ,bm.bmHeight ,&dcMem,0,0,SRCCOPY);
dcMem.SelectObject(oldbitmap);
CDialog::OnPaint();
}
}
你的问题就OK了。
关于按钮控件显示图片,建议你可以下载一个CButton的继承类,什么“CButtonST”啊、“CBtnST”啊、“CDlgShadeButtonST”啊,自己手写的话不划算,有很多现成的控件类,都写的非常好,完全可以拿来为我们所用。
㈣ MFC怎么为不同的对话框设置不同的背景
MFC设置背景,采用添加Bitmap的方法,首先把你想要设置为背景的图片转换成bmp格式,然后再引入到工程里面,再在每个对话框中添加控件,再选择。具体见图:
1、首先在工程添加bitmap,右击工程名,添加。
不同的对话框中,选择不同的图像就行了,图像就是你引入的。
㈤ 怎么给MFC的对话框加背景图片
1、新建MFC应用程序。
㈥ MFC如何在窗口显示背景图片~~~~~~~~~~~~~~~~
能吧问题描述的清楚点吗, 什么是“显示文字的那个窗口。。。不是对话框”??
补充:创建一个工程的时候,直接运行看到的窗口其实也是对话框。
添加背景图片:
1. 使用picture control控件,然后LoadBitmap, setbitmap就可以了
2. 也可以重写WM_ERASEBKGND消息:使用dc,先LoadBitmap, createcompatibledc,然后selectobject讲图片选到dc上去,最后bitblt将图片画上去。
3. 也可以重写WM_PAINT消息:基本跟2的步骤一样,但是最后还要处理下WM_ERASEBKGND,直接return TRUE.不然直接改写WM_PAINT可能会使背景闪烁
要看代码示例的话,建议你去http://www.vckbase.com/code里面很多关于UI制作的示例都很经典,而且还附带了文档解释,很容易看懂的,我基本都在上面学的。
㈦ mfc中,如何给对话框添加图片背景
添加背景最好是放在OnEraseBkgnd(CDC* pDC)函数中,在OnPaint中有可能会闪屏。
//CBitmapm_pBmp;
//BITMAPbm;
//CDCdcMem;
//m_pBmp.LoadBitmap(IDB_BITMAP_BG);
//m_pBmp.GetBitmap(&bm);//得到位图尺寸
//dcMem.CreateCompatibleDC(pDC);
//CBitmap*pOldBitmap=dcMem.SelectObject(&m_pBmp);
//pDC->SetStretchBltMode(COLORONCOLOR);//这个模式不设置的话会导致图片严重失真
//pDC->StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bm.bmWidth,bm.bmHeight,SRCCOPY);
//dcMem.SelectObject(pOldBitmap);
//dcMem.DeleteDC();
用我这个代码
㈧ mfc怎样设置进度条前景图和背景图
工具/原料
Visual C++ 2010
方法一:用Picture控件
1
新建MFC应用程序
2
在应用程序中,选择基于对话框,其他保持默认即可
3
右击项目,选择添加-资源
4
在添加资源对话框中,点击导入,选择要作为背景的图片
可以是jpg格式的图片哦
5
在工具箱找到Picture控件,托到界面中
6
在界面上点击选中Picture控件,然后在属性的Type下拉框中,选择Bitmap
7
再在Picture控件的属性的Type下拉框中插入的图片资源
选择好后,图片就可以加载进对话框了
8
运行程序,看到背景已经变成你设置的图片啦 #^_^#
END
方法二:重载 OnCtlColor()函数2
1
像方法一那样,插入一张图片到资源文件中,ID为 IDB_BITMAP2
2
在dlgImageDlg.h中,添加以下代码
dlgImage是项目的名称
3
在dlgImageDlg.cpp文件的OnInitDialog()函数中,添加以下代码
4
在设计界面中,右击对话框,选择属性。然后在消息中找到 WM_CTLCOLOR,在右侧下拉框中,选择 OnCtlColor,重载OnCtlColor()函数
5
在OnCtlColor()函数中,添加如下代码
6
运行程序,界面的背景已经变成漂亮的图片啦
END
方法二注意事项3
在方法二中,如果无法将jpg或其他格式的图片插入到Bitmap资源文件夹下,或者图片无法正常显示,可能是程序没有将其他格式的图片当作bmp格式来处理。
如果中间不是 BITMAP 格式,可以改成 BITMAP 格式
㈨ VC6.0MFC中怎样给对话框添加背景图片
你添加的这个不是bmp位图文件
附加位图的时候,不能单单是把文件后缀改成.bmp
你可以用画图,或者其他看图工具,打开图片后另存为bmp格式
再插入的时候,就会变成位图附加到项目中了
附加了以后,图片的id会变成IDB_BITMAP1,你可以改成自己想要的名字