您的位置:首页 > 其它

mfc窗口添加背景图片

2014-10-16 16:08 274 查看
1、把你的图包含到程序的“Bitmap资源”里,提示说该资源使

用了大于256色的调色板,在VC里无法编辑等等,点确定就可以 。如果没有Bitmap的话,可以再XXX.rc文件右击选择“添加资源” -> 选中BitMap,在右边选择新建即可。如果有的Bitmap的话。右击bitmap选择“添加资源”
-> 然后选择“导入” -> 选择你要导入的图片即可。

要改变图片的属性时,可以选中该图片,单击时可以修改ID等,而双击则可以修改其它相关属性。



2、定位到 void CXXXDlg::OnPaint(),在if()...else()中的else()下添加如下代码

else

{

//CDialog::OnPaint();//要禁止这个调用

CPaintDC dc(this);

CRect rect;

GetClientRect(&rect);

CDC dcMem;

dcMem.CreateCompatibleDC(&dc);

CBitmap bmpBackground;

bmpBackground.LoadBitmap(IDB_BITMAP);

//IDB_BITMAP是你自己的图对应的ID

CRect wndRt;

this->GetClientRect(&wndRt);

dc.SetStretchBltMode(HALFTONE); //设置拉伸模式后,肯定可以解决失真的现象,没解决说明这个函数

//IDB_BITMAP是你自己的图对应的ID

BITMAP bitmap;

bmpBackground.GetBitmap(&bitmap);

CBitmap *pbmpOld=dcMem.SelectObject(&bmpBackground);

dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,

bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);

}

如果窗口没有onpaint函数,可以如下设置

.h文件 //子窗口的头文件

afx_msg void OnPaint(...) //要添加的函数

.cpp文件 //子窗口的源文件

BEGIN_MSG_MAP(..) //设置的消息映射

WM_PAINT()

END_MSG_MAP()

void OnPaint()

{

}

对于消息处理函数必须自己做相应的消息映射,当然如果OnPaint正好是个虚函数的话那你的编写就没有问题,比如添加OnToolHitTest
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: