MFC为对话框添加背景图片
2014-10-29 22:39
218 查看
1、方法一:利用OnCtlColor函数(WM_CTLCOLOR消息)
(1)添加一个成员变量:CBrush m_bkBrush;
(2)在对话框的初始化函数OnInitDialog中添加如下内容:
(3)添加WM_CTLCOLOR消息的响应函数OnCtlColor:
(4)注:IDB_BITMAP_BK是导入的背景位图的资源ID。
2、方法二:在OnPaint函数中直接绘制背景
(1)声明两个成员变量:
(2)在OnInitDialog函数中添加如下代码:
(3)在OnPaint函数中添加如下代码:
3、以上两种方法其实差不多,都是窗口适应图片的大小,接下来介绍一种图片适应窗口大小的添加背景方法。
4、方法三:利用StretchBlt函数拉伸背景位图
(1)在OnPaint函数中添加以下代码:
(2)为了测试效果,可以将对话框的Border属性改为Resizing,另外在WM_SIZE消息的响应函数OnSize中添加一句:Invalidate();
5、效果:
(1)添加一个成员变量:CBrush m_bkBrush;
(2)在对话框的初始化函数OnInitDialog中添加如下内容:
BOOL CDlgBKDlg::OnInitDialog() { CDialogEx::OnInitDialog(); ... ... // TODO: 在此添加额外的初始化代码 // 载入位图 CBitmap oBitmap; oBitmap.LoadBitmap(IDB_BITMAP_BK); // 根据位图大小调整窗口大小 BITMAP bm; oBitmap.GetBitmap(&bm); MoveWindow(0, 0, bm.bmWidth, bm.bmHeight); // 创建位图画刷 m_bkBrush.CreatePatternBrush(&oBitmap); return TRUE; // 除非将焦点设置到控件,否则返回 TRUE }
(3)添加WM_CTLCOLOR消息的响应函数OnCtlColor:
HBRUSH CDlgBKDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) { HBRUSH hbr = CDialogEx::OnCtlColor(pDC, pWnd, nCtlColor); // TODO: 在此更改 DC 的任何特性 return (HBRUSH)m_bkBrush; // TODO: 如果默认的不是所需画笔,则返回另一个画笔 //return hbr; }
(4)注:IDB_BITMAP_BK是导入的背景位图的资源ID。
2、方法二:在OnPaint函数中直接绘制背景
(1)声明两个成员变量:
<span style="white-space:pre"> </span>CBrush m_bkBrush; BITMAP m_bm;
(2)在OnInitDialog函数中添加如下代码:
<span style="white-space:pre"> </span>// 载入位图 CBitmap oBitmap; oBitmap.LoadBitmap(IDB_BITMAP_BK); // 根据位图大小调整窗口大小 oBitmap.GetBitmap(&m_bm); MoveWindow(0, 0, m_bm.bmWidth, m_bm.bmHeight); // 创建位图画刷 m_bkBrush.CreatePatternBrush(&oBitmap);
(3)在OnPaint函数中添加如下代码:
void CDlgBKDlg::OnPaint() { if (IsIconic()) { ... ... } else { CPaintDC dc(this); CBrush* pOldBrush = dc.SelectObject(&m_bkBrush); dc.Rectangle(0, 0, m_bm.bmWidth, m_bm.bmHeight); dc.SelectObject(pOldBrush); CDialogEx::OnPaint(); } }
3、以上两种方法其实差不多,都是窗口适应图片的大小,接下来介绍一种图片适应窗口大小的添加背景方法。
4、方法三:利用StretchBlt函数拉伸背景位图
(1)在OnPaint函数中添加以下代码:
void CDlgBKDlg::OnPaint() { if (IsIconic()) { ... ... } else { CPaintDC dc(this); CBitmap oBitmap; oBitmap.LoadBitmap(IDB_BITMAP_BK); BITMAP bm; oBitmap.GetBitmap(&bm); CRect rcClient; GetClientRect(&rcClient); CDC dcMemory; dcMemory.CreateCompatibleDC(&dc); dcMemory.SelectObject(&oBitmap); dc.StretchBlt(0, 0, rcClient.Width(), rcClient.Height(), &dcMemory, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY); CDialogEx::OnPaint(); } }
(2)为了测试效果,可以将对话框的Border属性改为Resizing,另外在WM_SIZE消息的响应函数OnSize中添加一句:Invalidate();
void CDlgBKDlg::OnSize(UINT nType, int cx, int cy) { CDialogEx::OnSize(nType, cx, cy); // TODO: 在此处添加消息处理程序代码 Invalidate(); }
5、效果:
相关文章推荐
- VC++学习笔记2--如何给MFC对话框添加背景图片
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- MFC对话框添加背景图片
- MFC中添加一张图片作为对话框(或CFormView)的背景
- 如何给MFC对话框添加背景图片
- MFC 对话框添加背景图片
- MFC 为对话框添加背景图片并以图片大小显示
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- 如何在MFC对话框中添加背景图片
- MFC中 给对话框添加背景图片
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- MFC对话框添加背景图片
- MFC 对话框添加背景图片
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法
- 如何在MFC对话框中添加背景图片
- VC++2005mfc对话框添加背景图片
- MFC 对话框添加背景图片
- MFC中设置对话框颜色、添加背景图片、添加音乐的方法