VS2013MFC单文档工程学习笔记八 - 为窗口添加一张背景图片


方法一:

1、声明成员变量CBrush m_brush;
2、在InitDialog中添加代码:

CBitmap bmp;
bmp.LoadBitmap(IDB_BITMAP1);   //IDB_BITMAP1是图片资源ID
m_brush.CreatePatternBrush(&bmp);
3、重载对话框的OnCtlColor,改最后的返回值:

1
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   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);


有三种方法,我用第二种方法做例子,


笔记开始:

首先在  MFAppView.h 头文件中  找到类class CMFAppView : public CView{}

在这个类中声明一个消息表示这个消息我要用,这个消息属于我

public:
	

	afx_msg void OnPaint();
把上面的代码复制到这个class CMFAppView类中

声明完毕然后在源文件中实现他

在MFAppView.cpp源文件中创建一个OnPaint()消息回调       名字叫做 void CMFAppView::OnPaint()   类名::OnPaint()


void CMFAppView::OnPaint()
{
	CRect rc;
	GetWindowRect(&rc);
	rc.Width(); //获得宽度
		rc.Height(); //获得高度



	CPaintDC dc(this);
	CBitmap   bitmap;
	bitmap.LoadBitmap(IDB_图片ID这个要改自己的图片ID);   
	CBrush   brush;
	brush.CreatePatternBrush(&bitmap);
	CBrush*   pOldBrush = dc.SelectObject(&brush);
	dc.Rectangle(0, 0, rc.Width(), rc.Height());   // 这些参数可以调整图片添加位置和大小
	dc.SelectObject(pOldBrush);
}

懒得写的直接把上面的代码复制进去



这样代码就写完了,但是资源还没有导入呢,我们导入图片资源


点击   资源视图 -  对着项目 (右键) -  添加(出现一个菜单) -  资源

VS2013MFC单文档工程学习笔记八 - 为窗口添加一张背景图片_第1张图片


导入(出现对话框) -   选择一一张图片 -  打开 

这样图片就导入到程序资源表了, 找到这个图片记下它的ID号 我的图片ID是IDB_BITMAP1

bitmap.LoadBitmap(IDB_图片ID这个要改自己的图片ID);   在源代码这句代码中填写你的图片ID号 我的图片ID是IDB_BITMAP1

写完运行看看,我的效果图


VS2013MFC单文档工程学习笔记八 - 为窗口添加一张背景图片_第2张图片

你可能感兴趣的:(MFC,VC++)