之前写一个c++的项目,前期很顺利,但是在加背景图片的时候确耽搁了很久,被很多问题堵塞了很久,这里整理下方法。
首先贴上代码段:
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect);
CDC dcMem;
dcMem.CreateCompatibleDC(&dc);
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);//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);
这个段代码主要是接受如何为对话框添加背景图片,最后一段是一个拉伸函数,也可以换成BitBlt函数实现,因为我的方案基本上对图片没有拉伸。下面贴上操作部分:
1.首先,运行MFC对话框,然后用qq截图查看对话框背景部分的像素大小,当然也可以直接截下来在一些类似画图的图片查看器里面看出所截图片的大小,提醒下最好截得大一点。
2.然后,按照得到的对话框的大小去做背景图片,因为转换到显示器上的对话框大小单位不再是对话框的逻辑单位了,而是实际的像素单位,所以通过这种方式节省了通过函数计算等很多问题,直接知道实际的像素大小,这对作图来说是相当方便的。
3.最后保存为BMP格式文件的图片移动到res文件目录下就ok了。(如果不能保存为bmp格式文件,可以先保存为png,然后用美图秀秀直接保存转换成BMP就可以了,很方便的。
很简单的一种方法,也可能是自己还不够专业,懒得用代码实现添加不失真背景,所以懒着懒着得到了这个方法,将就着用吧。。