MFC怎么为不同的对话框设置不同的背景

MFC怎么为不同的对话框设置不同的背景,第1张

MFC设置背景,采用添加Bitmap的方法,首先把你想要设置为背景的图片转换成bmp格式,然后再引入到工程里面,再在每个对话框中添加控件,再选择。具体见图:

1、首先在工程添加bitmap,右击工程名,添加。

2、右击bitmap,选择引入。

3、在下面的d出的窗口中,选择文件类型,再找到你的bmp文件

4、引入成功后,再打开你的对话框(不同的对话框,选择不同的bitmap1/2/3)

5、选择第二个控件,在你的对话框中点击

6、再点击控件属性,在属性中选择位图,下面的选择你的bitmap1、2、3

不同的对话框中,选择不同的图像就行了,图像就是你引入的。

添加背景最好是放在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()

用我这个代码

这个只是加载图片的方法,但还没涉及到图片的放大和缩小的问题。

如果放大和缩小都会对图片造成失真。

解决方法一:对于有复杂纹理的图片,只能用一张比窗口大的图片,来进行裁切,以适应该窗口的大小。注意是裁切,不是拉伸。

解决方法二:对于没有纹理的图片,就用裁切加图片重新组合的方式,来适应窗口大小。这个实现方式,请参考以下博客,图片格式的进度条:

http://blog.csdn.net/renstarone/article/details/9230763


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

原文地址:https://54852.com/bake/7993885.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存