
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
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)