vc 加载bmp位图并显示的方法

简介: 方法一、显示位图文件 [cpp] view plaincopy   HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSection|Lr_DefaultSize|Lr_LoadFromFile);      //加载bmp文件   xxx.

方法一、显示位图文件

[cpp]  view plain copy
 
  1. HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSection|Lr_DefaultSize|Lr_LoadFromFile);  
  2.   
  3. //加载bmp文件   xxx.bmp 就是要加载的图片名字  
  4.   
  5. CBitmap bitmap; bitmap.Attach(hBitmap); //关联位图对象  
  6.   
  7. CDC dcimage;dcimage.CreateCompatibleDC(pDC); //内存  
  8.   
  9. DCBITMAP bmp;bitmap.GetBitmap(&bmp); //获取位图信息  
  10. dcimage.SelectObject(&bitmap); //选取位图对象  
  11.   
  12. pDC->BitBlt(0,0,bmp.bmWidth,bmp.bmHeight,&dcimage,0,0,SRCCOPY); //显示  


 

方法二、用文件打开对话框选取图片

你建立一个基于对话框的程序,在主对话框上加载一个 PictureBox,然后加载一个Button,添加点击Button事件。

具体代码如下:

 

CFileDialog dlg(TRUE,"bmp",".bmp",OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,"位图文件(*.BMP)|*.BMP||");

dlg.DoModal();

HBITMAP hBitmap;

 HDC hSrcDC;

 HDC hDesDC;

 CBitmap bmp;

CWnd *hwnd;

RECT rect;

BITMAP bm;

 hwnd = GetDlgItem(IDC_STATIC);

 hDesDC = hwnd->GetDC()->m_hDC;

hSrcDC = CreateCompatibleDC(hDesDC);

hBitmap=(HBITMAP)LoadImage(AfxGetInstanceHandle(),dlg.GetPathName(),IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION); GetObject(hBitmap, sizeof BITMAP, &bm);

SelectObject(hSrcDC, hBitmap);

 hwnd->GetClientRect(&rect);

::SetStretchBltMode(hDesDC,COLORONCOLOR);

 ::StretchBlt(hDesDC, rect.left, rect.top, rect.right, rect.bottom, hSrcDC, 0, 0, bm.bmWidth, bm.bmHeight,SRCCOPY); 
  直接用mfc自带的static 图片控件显示bmp位图资源 方法1:
   1) 更改属性Picture Control属性 
   2) 直接关联上image: 设置Image属性
   3) 更改type为Bitmap 
   
   方法2:(PictureEx类网上搜)
   1)添加控件变量为PictureEx对象
   2) 直接m_pic1.LoadBitmap(IDB_BITMAP1); 
  示例:
   1. 关联 Picture Control 对象: m_stPicture
   2. 添加2个BMP资源 IDB_BITMAP1, IDB_BITMAP2
   3. 定义: HBITMAP m_hBitmap;
  4. 一开始显示图片
  

   BOOL CShowBmpDlg::OnInitDialog(){ 
   CDialog::OnInitDialog(); 
   ...... //显示图片 m_hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP1), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS); 
 m_stPicture.ModifyStyle(0xF, SS_BITMAP);
   m_stPicture.SetBitmap(m_hBitmap); 
   return TRUE;  // 除非设置了控件的焦点,否则返回 TRUE
  }

5. 切换图片
void CShowBmpDlg::OnBnClickedOk(){

 static int nId = 0;
 nId++; 
 if (NULL != m_hBitmap)
 {  
  ::DeleteObject(m_hBitmap);
  m_hBitmap = NULL;
 } int nPicId = nId = nId % 2 ? IDB_BITMAP2 : IDB_BITMAP1; 
 m_hBitmap = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(nPicId), IMAGE_BITMAP, 0, 0, LR_LOADMAP3DCOLORS); 
 m_stPicture.ModifyStyle(0xF, SS_BITMAP);
 m_stPicture.SetBitmap(m_hBitmap);
}

目录
相关文章
|
6月前
|
机器学习/深度学习 算法 Python
机器学习特征筛选:向后淘汰法原理与Python实现
向后淘汰法(Backward Elimination)是机器学习中一种重要的特征选择技术,通过系统性地移除对模型贡献较小的特征,以提高模型性能和可解释性。该方法从完整特征集出发,逐步剔除不重要的特征,最终保留最具影响力的变量子集。其优势包括提升模型简洁性和性能,减少过拟合,降低计算复杂度。然而,该方法在高维特征空间中计算成本较高,且可能陷入局部最优解。适用于线性回归、逻辑回归等统计学习模型。
231 7
|
人工智能 测试技术 API
AI计算机视觉笔记二十 九:yolov10竹签模型,自动数竹签
本文介绍了如何在AutoDL平台上搭建YOLOv10环境并进行竹签检测与计数。首先从官网下载YOLOv10源码并创建虚拟环境,安装依赖库。接着通过官方模型测试环境是否正常工作。然后下载自定义数据集并配置`mycoco128.yaml`文件,使用`yolo detect train`命令或Python代码进行训练。最后,通过命令行或API调用测试训练结果,并展示竹签计数功能。如需转载,请注明原文出处。
|
11月前
|
网络协议 Java 程序员
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
【网络】局域网LAN、广域网WAN、TCP/IP协议、封装和分用
423 2
|
安全 关系型数据库 MySQL
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
【IIS搭建网站】本地电脑做服务器搭建web站点并公网访问「内网穿透」
|
安全 测试技术 Swift
Llama 3开源,魔搭社区手把手带你推理,部署,微调和评估
Meta发布了 Meta Llama 3系列,是LLama系列开源大型语言模型的下一代。在接下来的几个月,Meta预计将推出新功能、更长的上下文窗口、额外的模型大小和增强的性能,并会分享 Llama 3 研究论文。
Llama 3开源,魔搭社区手把手带你推理,部署,微调和评估
|
Ubuntu Linux 编译器
当自身需要使用的 gcc版本 和Linux 默认版本 存在大版本差异时怎样处理
当自身需要使用的 gcc版本 和Linux 默认版本 存在大版本差异时怎样处理
418 2
【逆向】使用x64dbg实现qq私聊与群消息防撤回
使用x32dbg调试32位QQ,通过附加QQ进程并禁用断点。搜索im.dll,找到消息撤回函数,设断点。发测试消息并观察中断点,定位到0X0F01D112C。用NOP替换疑似撤回函数的CALL指令,测试成功后保存为补丁,替换原IM.dll文件,完成防撤回。群聊防撤回类似,需单独找对应函数。注意仅防本地撤回,服务器上仍会显示撤回。
【逆向】使用x64dbg实现qq私聊与群消息防撤回
|
JSON JavaScript 数据格式
vue展示json数据,vue-json-viewer的使用
vue展示json数据,vue-json-viewer的使用
324 0
|
编译器 存储 网络协议
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
1043 1
【汇编】CS、IP寄存器与代码段,用汇编语言写的源程序,jmp指令
|
JavaScript 前端开发 Java
Postman 提供的Javascript 对象有哪些?
Postman 提供的Javascript 对象有哪些?
208 0