MFC如何设置背景图片
==> 学习汇总(持续更新)
==> 从零搭建后端基础设施系列(一)-- 背景介绍
方法有很多种,有难有易。接下来从简单到难来讲解,并举例。
一、利用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如何设置背景图片相关推荐
- MFC设置背景图片之三(使用GDI+)
前言 前面提及到两种方法可以设置MFC背景图片,操作由简到难,当然了他们的适用情况及功能性也是由简到繁的,这次使用的方法基本能满足任何功能需求,使用GDI+加载的背景图片可随窗口大小缩放 添加头文件 ...
- c语言窗口如何加背景图片,MFC积累---关于设置背景图片、背景颜色插入背景音乐...
第二种方法是把声音文件加入到资源中,然后从资源中播放声音.Visual C++支持WAVE型资源,用户在资源视图中单击鼠标右键并选择Import命令,然后在文件选择对话框中选择The Microsof ...
- android取消背景图片,android 设置背景图片
>**无背景的代码稍显枯燥啊少年: vs2015,vs2019等 再拓展里下载:** ! import java.awt.FlowLayout; import javax.swing.Image ...
- php设置背景图片的代码,css设置背景图片如何实现?(代码实例)
本篇文章给大家带来的内容是关于css设置背景图片如何实现?(代码实例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 很多人提交表单时都喜欢用一个图片来作为提交按钮,大多数人可能用J ...
- CocoStudio 0.2.4.0 UI编辑器下根Panel控件设置背景图片时一个BUG
我使用的编辑器是0.2.4.0,其实明几天就发现这个问题.在最顶层的Panel设置背景图片时无法再在File一行通过普通的方法(如大家所知,在此 行上单击右键选择"重置为默认值") ...
- 解决IE8,7下设置背景图片 background-size 不支持问题
解决IE8,7下设置背景图片 background-size 不支持问题 参考文章: (1)解决IE8,7下设置背景图片 background-size 不支持问题 (2)https://www.cn ...
- background-position—CSS设置背景图片的位置
background-position :在 CSS 中通过 background-position 属性可以调整背景图片的位置.因为在默认情况下背景图片都是从设置了 background-posit ...
- 设置背景图片,解决手机上背景图片高度适应问题
设置背景图片,解决手机上背景图片高度适应问题 第一种方法:直接对图片进行设置,代码如下 <img src="url" class="PhoneBack"& ...
- java主界面设置背景图片_java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改)...
java 窗体设置背景图片问题?(附上登陆界面代码,我想加个背景图片,求大神帮忙改改) 关注:223 答案:4 mip版 解决时间 2021-01-26 22:09 提问者非莪莫属 2021-01 ...
最新文章
- Could not initialize class org.jetbrains.kotlin.gradle.internal.KotlinSourceSetProviderImplKt
- 文本处理三驾马车 • grep • sed • awk
- 一文梳理视觉Transformer架构进展:与CNN相比,ViT赢在哪儿?
- pro git读书笔记
- 风变编程python第一关脸黑怪我喽_风变编程:Python适合编程初学者学习吗?
- Openlayers中点击地图获取坐标并输出
- ajax burp 乱码,burp suite中国乱码的解决方案
- (3)nginx的虚拟主机配置
- Python 基础知识(二)
- PowerShell3.0入门视频(由Jeffrey Snover和Jason Helmick主讲)
- oracle怎样避免脑裂的,redis集群怎么防止脑裂
- TensorFlow 2 Object Detection API 教程: model 命名规则
- iOS开发之千位分隔符(千位符)
- Linux上安装gcc
- 360浏览器访问跨域问题
- centos7 单机安装 greenplum6
- Bailian——4074积水量
- 哪些学校有计算机博士点,哪些学校有计算机应用博士点
- 【前端篇】火狐浏览器打开调试器,报“Error: Incorrect contents fetched, please reload.”
- Springboot 之 RESTFul风格