基于Visual Stadio 2017 MFC 对话框背景导入问题


本文仅作学习使用,欢迎各位大佬补充改正。因为MFC已经过于古老,网上关于MFC的部分使用的记录过于久远,所以记录学习下,方便以后翻用,本文使用两种方法导入bitmap文件,然后进行背景设置。

第一种方法 (失真率较高)

1 MFC 资源视图中Bitmap中右键插入一个bitmap文件
在这里插入图片描述
2 将图像用window自带的画图软件打开 全选复制后粘贴到刚新建的bitmap中
在这里插入图片描述在这里插入图片描述这里可以看到图像的颜色已经发生了变化
3 在想添加的对话框.cpp文件中的:OnPaint()函数的if else中的else部分删除绘制函数CDialogEx::OnPaint();
然后粘贴下面部分代码,其中IDB_BITMAP1为前面新建的的bitmap的ID。

		CPaintDC   dc(this);
		CRect   rect;
		GetClientRect(&rect);    //获取对话框长宽      
		CDC   dcBmp;             //定义并创建一个内存设备环境
		dcBmp.CreateCompatibleDC(&dc);             //创建兼容性DC
		CBitmap   bmpBackground;
		bmpBackground.LoadBitmap(IDB_BITMAP1);    //载入资源中图片
		BITMAP   m_bitmap;                         //图片变量               
		bmpBackground.GetBitmap(&m_bitmap);       //将图片载入位图中
												  //将位图选入临时内存设备环境
		CBitmap  *pbmpOld = dcBmp.SelectObject(&bmpBackground);
		//调用函数显示图片StretchBlt显示形状可变
		dc.StretchBlt(0, 0, rect.Width(), rect.Height(), &dcBmp, 0, 0, m_bitmap.bmWidth, m_bitmap.bmHeight, SRCCOPY);

4 这里直接运行如果报找不到IDB_BITMAP1的错误,需要在这个对话框的头文件中加入#include"resource.h",运行结果为:
在这里插入图片描述

第二种方法 (该方法的失真率比上一种方法低)

1 同样新建bitmap文件之后,打开属性页,可以看到filename为**、res\bitmap1.bmp,在项目文件中找到res文件,删除其中的bitmap1.bmp文件,并将你想使用的背景图片存到res文件夹中,重命名为bitmap1.bmp:(这里可以将属性页中的bitmap1.bmp更改亦可,仅需将res文件中的背景图片命名为相应的名字)
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

2 步骤和上面第一种方法 中的步骤3、4一致,运行结果为下图,这里可以看到虽然依旧不够清晰,但明显失真率没有第一种方法高了:
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值