VS2008 MFC 对话框 如何 添加背景图片

 我来答
xz宏定义
2012-11-07 · TA获得超过1029个赞
知道小有建树答主
回答量:1621
采纳率:100%
帮助的人:228万
展开全部
方法一:

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);
瓮楚妫子
2020-05-09 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.4万
采纳率:29%
帮助的人:987万
展开全部
在资源视图下打开需要编辑的对话框,然后通过“视图”--“工具箱”打开工具箱浮动窗口,工具箱内有各种控件,里面就有静态文本和文本框控件
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Unkn0wName
2012-11-06 · TA获得超过106个赞
知道小有建树答主
回答量:243
采纳率:0%
帮助的人:132万
展开全部
**********************************************************/*
函数功能:显示jpg、gif图片
函数名称:ShowJpgGif
函数备注:GIF只能显示一帧,要显示动画GIF请使用ACTIVE控件。
函数参数:
CWnd *This 指针
CString strPath 文件路径
int x 显示的横坐标
int y 显示的纵坐标
BOOL type 如果为真就根据CDC *pDC的大小缩放图片
如果为假就根据图片大小显示图片
返回值:成功返回1 失败返回0
使用例程:
ShowJpgGif(this,"C:\\9.jpg",0,0,False);
***********************************************************/
BOOL ShowJpgGif(CWnd *This,CString strPath,int x,int y,BOOL type)
{
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
CDC *pDC=This->GetDC();
//打开文件并检测文件的有效性
if(file.Open(strPath,CFile::modeRead)&&
file.GetStatus(strPath,fstatus)&&
((cb = fstatus.m_size)!=-1))
{
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE, cb);
LPVOID pvData=NULL;
if(hGlobal!=NULL)
{
pvData = GlobalLock(hGlobal);
if(pvData!= NULL)
{
file.ReadHuge(pvData, cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal, TRUE, &pStm);
}
}
}
else
{
return false;
} //打开文件结束
IPicture *pPic;
if(SUCCEEDED(OleLoadPicture(pStm,fstatus.m_size,TRUE,
IID_IPicture,(LPVOID*)&pPic)))
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_YSIZE_HIMETRIC hmHeight;
pPic-> get_Width(&hmWidth);
pPic-> get_Height(&hmHeight);
double fX,fY;
//get image height and width
CRect rect;
GetClientRect(This->m_hWnd,&rect);
if(type==1)
{
fX=double(rect.Width());
fY=double(rect.Height());
if(FAILED(pPic-> Render(*pDC,x,y,(DWORD)fX,(DWORD)fY,0,
hmHeight,hmWidth,-hmHeight,NULL)))
{
pPic->Release();
return false;
}
pPic->Release();
}
else
{
//得到真实的高度和宽度
CSize sz(hmWidth, hmHeight);
pDC->HIMETRICtoDP(&sz);
if(FAILED(pPic-> Render(*pDC,x,y,sz.cx,sz.cy,0,
hmHeight,hmWidth,-hmHeight,NULL)))
{
pPic->Release();
return false;
}
pPic->Release();
}
}
else
{
return false;
}
return true;
}

//加载图片到picture图片控件的代码

CBitmap m_bitmap; //成员变量
HBITMAP hBmp;
m_bitmap.LoadBitmap(IDB_BITMAP); //IDB_BITMAP为位图ID
hBmp = (HBITMAP)m_bitmapTest.GetSafeHandle();
m_static.SetBitmap(hBmp); //m_static为Pic控件关联的变量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式