MFC的一个对话框中怎样设置背景为一个图片

MFC的一个对话框中怎样设置背景为一个图片,第1张

在MFC中给对话框中设置背景图片,方法有多种,这里整理了三种,具体 *** 作如下:

方法一:

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)

添加背景最好是放在OnEraseBkgnd(CDC* pDC)函数中,在OnPaint中有可能会闪屏。

//     CBitmap m_pBmp

//     BITMAP bm

//     CDC dcMem

//     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()

用我这个代码

你添加的这个不是bmp位图文件

附加位图的时候,不能单单是把文件后缀改成.bmp

你可以用画图,或者其他看图工具,打开图片后另存为bmp格式

再插入的时候,就会变成位图附加到项目中了

附加了以后,图片的id会变成IDB_BITMAP1,你可以改成自己想要的名字


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11947615.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存