当前位置: 首页 > news >正文

MFC为控件添加背景图片

1、 添加选择Bitmap导入图片,图片文件最好放在项目res目录中,同时是BMP格式。上传后的图片在资源视图,命名为IDB_BITMAP_M_BACK。

2、在cpp的C***Dlg::OnPaint()函数下添加如下代码

void C***Dlg::OnPaint()
{CPaintDC dc(this); // device context for painting// TODO: 在此处添加消息处理程序代码 //获取控件在对话框上的位置,*IDC_STATIC_ENERGY_S为需添加背景图片的控件*CRect rect;GetDlgItem(IDC_STATIC_ENERGY_S)->GetWindowRect(&rect);//获取控件的屏幕坐标ScreenToClient(&rect);	//转换为对话框上的客户坐标CBitmap   bmpBackground;    bmpBackground.LoadBitmap(IDB_BITMAP_M_BACK);  //加载位图 BITMAP   bitmap;    bmpBackground.GetBitmap(&bitmap);   	//生成BITMAPCDC   dcMem;    dcMem.CreateCompatibleDC(&dc);    //选入DC CBitmap   *pbmpOld=dcMem.SelectObject(&bmpBackground);   //用客户区的DC绘制所生成的BITMAP,并适应为窗口大小 dc.StretchBlt(rect.left,rect.top,rect.Width(),rect.Height(),&dcMem,0,0,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);  // 不为绘图消息调用 CDialogEx::OnPaint()
}

如果是主程序的cpp文件中已有OnPaint函数,则修改else部分代码:

void C***Dlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{//	CDialogEx::OnPaint(); //注释该语句:防止重复调用重画函数***在这里添加上面那段代码***}
}

运行效果:
在这里插入图片描述

http://www.lryc.cn/news/133184.html

相关文章:

  • 1047:判断能否被3,5,7整除
  • 十七、DoIP诊断通信 2 (专栏:从零开始搭建一个UDS诊断自动化测试CANoe工程)
  • 【2023】LeetCode HOT 100——哈希
  • TCP/IP---网络层
  • 解决访问Github出现的Couldn‘t connect to server错误
  • 善于打仗的人,没有特别大的名气和勇功
  • 虚幻官方项目《CropOut》技术解析 之 程序化岛屿生成器(IslandGenerator)
  • 微服务中间件--微服务保护
  • Excel VBA 复制除指定工作表外所有的工作表的内容到一张工作表中
  • 电脑上安装,多版本node
  • 「网页开发|环境安装」Windows系统下安装node.js
  • 【腾讯云Cloud Studio实战训练营】用Vue+Vite快速构建完成交互式3D小故事
  • MySQL和Java中的货币字段类型选择
  • 第6步---MySQL的控制流语句和窗口函数
  • Android通过OpenCV实现相机标定
  • 我们可能要为ChatGPT的谢幕做好准备
  • 深入浅出Pytorch函数——torch.nn.init.xavier_normal_
  • Abandon_Ubuntu Declaration
  • Java设计模式-抽象工厂模式
  • Rust语法:所有权引用生命周期
  • 办手机卡/流量卡需要问清楚啥?
  • vim基本使用方法
  • 漏洞指北-VulFocus靶场专栏-入门
  • 管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——推论——第二节——数字推理题
  • git基础教程(24) git reflog查看引用日志
  • 成都爱尔谭娇主任提醒孩子不停揉眼睛是因为什么
  • 医疗设备管理软件哪家好?医院设备全生命周期管理要怎么做?
  • 基于PaddlePaddle实现的声纹识别系统
  • 使用GDB工具分析core文件的方法
  • Maven - 统一构建规范:Maven 插件管理最佳实践