==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍


方法有很多种,有难有易。接下来从简单到难来讲解,并举例。

一、利用WM_CTLCOLOR消息将图片绘制上去

步骤如下:
1.为对话框添加WM_CTLCOLOR消息

2.添加两个成员变量

 CBitmap m_bmp;   //位图CBrush m_brush;  //画刷

3.加载位图,并且在WM_CTLCOLOR函数中绘制背景

m_bmp.LoadBitmap(MAKEINTRESOURCE(IDB_BITMAP1));    //这里将位图加载进资源后,再Loadm_brush.CreatePatternBrush(&m_bmp); if (nCtlColor == CTLCOLOR_DLG){return m_brush;}

结果如图:

这个方法的缺点就是,图片不能自适应窗口大小。

二、用GDI函数将图片"画"上去

步骤如下:
1.添加成员变量如下

 CBitmap m_bmp;      //存放位图对象CDC m_dc;           //DC对象

2.在初始化对话框中加载位图并选入DC中

 //加载位图CBitmap bmp;bmp.LoadBitmapA(MAKEINTRESOURCE(IDB_BITMAP1));//添加位图m_bmp.Attach(bmp);//创建兼容DCCDC* pDc = GetDC();m_dc.CreateCompatibleDC(pDc);//用完之后释放ReleaseDC(pDc);//把位图对象选入DC中m_dc.SelectObject(&m_bmp);//使窗口无效,这样OnPaint函数就会被触发,使之被画出来Invalidate(FALSE);

3.最后在OnPaint函数中将位图画出来

     //画图DCCPaintDC dc(this);CRect rect = { 0 };GetClientRect(&rect);//缩放位图BITMAP bm;m_bmp.GetBitmap(&bm);dc.StretchBlt(0, 0, rect.Width(), rect.Height(),&m_dc, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);CDialogEx::OnPaint();

结果如图:

优点是图片可以伸缩,缺点就是图片会变得模糊。

三、用GDI+函数将图片"画"上去
1.初始化GDI+
请参看这篇文章MFC-GDI+初始化

2.添加一个Image成员变量

Image* m_img;

3.在初始化对话框中加载图片

 char buf[256] = "";GetCurrentDirectoryA(256, buf);sprintf_s(buf, "%s\\test.bmp", buf);CStringW s;   //转为宽字符s = buf;m_img = Image::FromFile(s);  //加载图片

4.在OnPaint函数中画出来

     CRect rect = { 0 };GetClientRect(&rect);   //获取客户区大小Graphics g(dc);g.DrawImage(m_img, 0, 0, rect.Width(), rect.Height());

这种方法功能最全,最好用。拉伸的时候图片清晰度被保持的很好,而且可以加载很多种类型的图片。还可以对图片进行旋转等操作。

结果如图:

MFC如何设置背景图片相关推荐

  1. MFC设置背景图片之三(使用GDI+)

    前言 前面提及到两种方法可以设置MFC背景图片,操作由简到难,当然了他们的适用情况及功能性也是由简到繁的,这次使用的方法基本能满足任何功能需求,使用GDI+加载的背景图片可随窗口大小缩放 添加头文件 ...

  2. c语言窗口如何加背景图片,MFC积累---关于设置背景图片、背景颜色插入背景音乐...

    第二种方法是把声音文件加入到资源中,然后从资源中播放声音.Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsof ...

  3. android取消背景图片,android 设置背景图片

    >**无背景的代码稍显枯燥啊少年: vs2015,vs2019等 再拓展里下载:** ! import java.awt.FlowLayout; import javax.swing.Image ...

  4. php设置背景图片的代码,css设置背景图片如何实现?(代码实例)

    本篇文章给大家带来的内容是关于css设置背景图片如何实现?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用J ...

  5. CocoStudio 0.2.4.0 UI编辑器下根Panel控件设置背景图片时一个BUG

    我使用的编辑器是0.2.4.0,其实明几天就发现这个问题.在最顶层的Panel设置背景图片时无法再在File一行通过普通的方法(如大家所知,在此 行上单击右键选择"重置为默认值") ...

  6. 解决IE8,7下设置背景图片 background-size 不支持问题

    解决IE8,7下设置背景图片 background-size 不支持问题 参考文章: (1)解决IE8,7下设置背景图片 background-size 不支持问题 (2)https://www.cn ...

  7. background-position—CSS设置背景图片的位置

    background-position :在 CSS 中通过 background-position 属性可以调整背景图片的位置.因为在默认情况下背景图片都是从设置了 background-posit ...

  8. 设置背景图片,解决手机上背景图片高度适应问题

    设置背景图片,解决手机上背景图片高度适应问题 第一种方法:直接对图片进行设置,代码如下 <img src="url" class="PhoneBack"& ...

  9. java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...

    java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223  答案:4  mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...

最新文章

  1. Could not initialize class org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImplKt
  2. 文本处理三驾马车 • grep • sed • awk
  3. 一文梳理视觉Transformer架构进展:与CNN相比,ViT赢在哪儿?
  4. pro git读书笔记
  5. 风变编程python第一关脸黑怪我喽_风变编程:Python适合编程初学者学习吗?
  6. Openlayers中点击地图获取坐标并输出
  7. ajax burp 乱码,burp suite中国乱码的解决方案
  8. (3)nginx的虚拟主机配置
  9. Python 基础知识(二)
  10. PowerShell3.0入门视频(由Jeffrey Snover和Jason Helmick主讲)
  11. oracle怎样避免脑裂的,redis集群怎么防止脑裂
  12. TensorFlow 2 Object Detection API 教程: model 命名规则
  13. iOS开发之千位分隔符(千位符)
  14. Linux上安装gcc
  15. 360浏览器访问跨域问题
  16. centos7 单机安装 greenplum6
  17. Bailian——4074积水量
  18. 哪些学校有计算机博士点,哪些学校有计算机应用博士点
  19. 【前端篇】火狐浏览器打开调试器,报“Error: Incorrect contents fetched, please reload.”
  20. Springboot 之 RESTFul风格

热门文章

  1. 【CF #797 Div3】A-E
  2. Hyperview二次开发:模态阵型的自动排列、输出GIF、输出PPT等
  3. 串口termios结构体的详细设置
  4. 串口通信协议(基于面试),与及树莓派与电脑之间串口通信
  5. JavaScript比较运算大于小于等于
  6. 《高通QCS8250》Debug XBL开机启动、进入fastboot花屏问题
  7. 多节点Linux环境打造
  8. 漫谈图像超分辨率技术
  9. chrome浏览器安装右键翻译插件
  10. I am a boy!