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

方法一、显示位图文件

[cpp] view plaincopy

  1. HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,_T(“xxx.bmp”),Image_Bitmap,0,0,Lr_CreateDibSection|Lr_DefaultSize|Lr_LoadFromFile);
  2. //加载bmp文件   xxx.bmp 就是要加载的图片名字
  3. CBitmap bitmap; bitmap.Attach(hBitmap); //关联位图对象
  4. CDC dcimage;dcimage.CreateCompatibleDC(pDC); //内存
  5. DCBITMAP bmp;bitmap.GetBitmap(&bmp); //获取位图信息

  6. dcimage.SelectObject(&bitmap); //选取位图对象
  7. 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);
}

vc 加载bmp位图并显示的方法,码迷,mamicode.com

时间: 2024-11-18 08:02:06

vc 加载bmp位图并显示的方法的相关文章

Android的jni层如何加载bmp位图

============问题描述============ 最近在做关于opengles的jni开发的东西,遇见一些问题,以前在java层加载位图然后贴图很容易,当时把相应代码移植到jni层之后,其他的都没问题,但是位图加载遇见了问题,有没有大神指导怎么才能在jni层将bmp图加载到代码中,然后去贴图?? 我实在ubuntu环境下开发的 ============解决方案1============ 引用 楼主 u010654357 的回复: 最近在做关于opengles的jni开发的东西,遇见一些问

Skeleton Screen加载占位图(内容出现前显示灰色占位图)的分析与实现

今天有几个好友问了这个叫加载占位图的实现方法,我还在此问题下做了个回答.由于国内对这个的名词是各有各的叫法,所以这里直接用加载占位图来解释.相信很多人都看到过图中这样的加载方式: 这个图是一个国内知名站点的,相比以往的loading圈圈,看起来是不是美观了许多.据说这个Idea是一个谷歌工程师在2013年时想到的.我不喜欢去讨论概念之类.直接用知名站点来通俗易懂的解释: 以往:发起ajax-loading.gif/svg-ajax结果.现在:发起ajax-具有css3动感(比如闪烁)的灰色布局d

vc++加载透明png图片方法——GDI+和CImage两种

vc++加载透明png图片方法——GDI+和CImage两种 在加载png时遇到了麻烦,后来用了两个方法解决了.一个是用GDI+,另外就是用vs.net MFC自带的CImage. 先看看GDI+的方法 方法1: 1.GDI+画透明图层(alpha)的png图片 stdafx加入如下: #include <comdef.h>//初始化一下com口 #include "GdiPlus.h" using namespace Gdiplus; #pragma comment(li

有效地加载大尺寸位图(Loading Large Bitmaps Efficiently)

有效地加载大尺寸位图(Loading Large Bitmaps Efficiently) 图片有不同的形状与大小.在大多数情况下它们的实际大小都比需要呈现出来的要大很多.例如,系统的Gallery程序会显示那些你使用设备camera拍摄的图片,但是那些图片的分辨率通常都比你的设备屏幕分辨率要高很多. 考虑到程序是在有限的内存下工作,理想情况是你只需要在内存中加载一个低分辨率的版本即可.这个低分辨率的版本应该是与你的UI大小所匹配的,这样才便于显示.一个高分辨率的图片不会提供任何可见的好处,却会

MFC 的 Picture Control 加载 BMP/PNG 图片的方法

1. 加载 BMP [cpp] view plaincopyprint? CStatic* pWnd = (CStatic*)GetDlgItem(IDC_PIC); // 得到 Picture Control 句柄 pWnd->ModifyStyle(0, SS_BITMAP); // 修改它的属性为位图 pWnd->SetBitmap((HBITMAP)::LoadImage(NULL, _T("bmp.bmp"), IMAGE_BITMAP, 100, 50, LR_

Android之ListView异步加载图片且仅显示可见子项中的图片

折腾了好多天,遇到 N 多让人崩溃无语的问题,不过今天终于有些收获了,这是实验的第一版,有些混乱,下一步进行改造细分,先把代码记录在这儿吧. 网上查了很多资料,发现都千篇一律,抄来抄去,很多细节和完整实例都没看到,只有自己一点点研究了,总体感觉 android 下面要显示个图片真不容易啊. 项目主要实现的功能: 异步加载图片图片内存缓存.异步磁盘文件缓存解决使用 viewHolder 后出现的图片错位问题优化列表滚动性能,仅显示可见子项中的图片无需固定图片显示高度,对高度进行缓存使列表滚动时不会

Unity 显示Loading(加载)进度 对于网上流行的方法进行更正

实际上就是MOMO贴出来的方法其实是有问题的,用过的才知道.至于别的几乎不用找,根本一个抄一个,抄来抄去都是一样,没自己的东西. 用过MOMO那个方法的都应该会发现了,当进度条开始显示的时候,基本上已经加载到80%了,可能也跟Unity版本有关,我的是4.3.4 .但是实际上Unity的工作原理差不多就那样,在Start里面直接开始加载的协程,实际上一开始就会阻塞,导致画面刚刚渲染出来的时候,已经完成了一部分的加载,而很多资源会在一开始就加载了,如果这里的资源太多了,那么就会像我一样,显示很长时

vc++ 加载,卸载自己的驱动程序

用vc++加载自己的驱动程序主要分为以下几个步骤: 1.加载驱动服务 主要要用到以下几个函数 SC_HANDLE WINAPI OpenSCManagerA( __in_opt        LPCSTR                lpMachineName, __in_opt        LPCSTR                lpDatabaseName, __in            DWORD                   dwDesiredAccess ); //创建

JavaScript-onerror事件:图片加载失败后不显示

HTML: <img src="http://www.mazey.net/images/upload/image/20170518/1495122198180663.gif" id="img1" onerror="hideImg1();"> <!--下面这个图加载失败但不会出现加载失败的样式--> <img src="http://www.mazey.net/images/upload/image/2017