在程序中加载位图有很多方法,各有各的好处。这里简单说一下在资源里和文件里加载的区别。

第一、在资源里加载位图

  这种方法就是在工程里的“资源视图”-->“添加资源”-->"Bitmap"-->"导入位图"

  每个资源都会有一个资源ID,使用位图时就通过资源ID对他进行控制。

  然后在设置背景图片是只需在OnPaint();里添加如下

        CPaintDC dc(this);
CRect rc;
GetClientRect(&rc); CDC memDC;//目标内存
memDC.CreateCompatibleDC(&dc);//创建内存兼容环境
CBitmap bmpBackground;
bmpBackground.LoadBitmap(IDB_BITMAP1);//资源ID
BITMAP bitmap;
bmpBackground.GetBitmap(&bitmap);//获取位图
CBitmap *oldbtimap = memDC.SelectObject(&bmpBackground); dc.StretchBlt(,,rc.Width(),rc.Height(),&memDC,,,bitmap.bmWidth,bitmap.bmHeight,SRCCOPY);//

  这样直接运行就可以显示位图了,但是有个缺点就是,如果位图比较大的话,最终生成的应用程序会很大,位图会包含在exe程序中,如果位图比较多的话,应用程序的大小就比较恐怖了,估计要几十兆了。

第二、在文件中直接加载

  这种方法用到函数LoadImage();//从文件中加载位图

 HANDLE WINAPI LoadImage(
_In_opt_ HINSTANCE hinst,//实例句柄
_In_ LPCTSTR lpszName,//文件名
_In_ UINT uType,//文件类型,包括IMAGE_BITMAP,IMAGE_CURSOR,IMAGE_ICON
_In_ int cxDesired,//这个在加载ICON时使用
_In_ int cyDesired,//
_In_ UINT fuLoad//加载的方式 ,如LR_LOADFROMFILE
);

  使用方法如下:

         CPaintDC dc(this);
CRect rc;
GetClientRect(&rc); CBitmap bmpBackground;
bmpBackground.DeleteObject();
HBITMAP hBitmap=(HBITMAP)LoadImage(NULL,L"Background.bmp",IMAGE_BITMAP,,,LR_LOADFROMFILE);//加载位图
bmpBackground.Attach(hBitmap);//绑定 CDC memDC;//目标内存
memDC.CreateCompatibleDC(&dc);//创建内存兼容环境
memDC.SelectObject(bmpBackground.m_hObject);//
dc.BitBlt(,,rc.Width(),rc.Height(),&memDC,,,SRCCOPY);

  这种方法加载位图只需将图片和应用程序放在同一个目录下,生成的应用程序不会和位图产生太大的关联,会很小,而且还可以自己替换背景图片。

  总结一下,感觉还是第二种方法比较方便,生成的应用程序很小,位图可以自己替换。

BMP图片的加载方式:资源 VS 文件的更多相关文章

  1. Vue中图片的加载方式

    一.前言 VUE项目中图片的加载是必须的,那么vue中图片的加载方式有哪些呢,今天博主就抽点时间来为大家大概地捋一捋. 二.图片的加载方法 1.在本地加载图片(静态加载) 图片存放assets文件夹中 ...

  2. 转载:Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式

    Flash AS3.0 加载外部资源(图片,MP3,SWF)的两种方式 出自:http://www.cnblogs.com/top5/archive/2012/08/04/2623464.html 关 ...

  3. iOS WebView 加载本地资源(图片,文件等)

    https://www.cnblogs.com/dhui69/p/5596917.html iOS WebView 加载本地资源(图片,文件等) NSString *path = [[NSBundle ...

  4. iOS 正确选择图片加载方式

    正确选择图片加载方式能够对内存优化起到很大的作用,常见的图片加载方式有下面三种: //方法1 UIImage *imag1 = [UIImage imageNamed:@"image.png ...

  5. 前端实现图片懒加载(lazyload)的两种方式

    在实际的项目开发中,我们通常会遇见这样的场景:一个页面有很多图片,而首屏出现的图片大概就一两张,那么我们还要一次性把所有图片都加载出来吗?显然这是愚蠢的,不仅影响页面渲染速度,还浪费带宽.这也就是们通 ...

  6. JavaScript判断图片是否加载完成的三种方式

    JavaScript判断图片是否加载完成的三种方式 有时需要获取图片的尺寸,这需要在图片加载完成以后才可以.有三种方式实现,下面一一介绍. 一.load事件 1 2 3 4 5 6 7 8 9 10 ...

  7. 渐进式jpeg(progressive jpeg)图片及其相关 --图片的两种加载方式

    渐进式jpeg(progressive jpeg)图片及其相关   一.基本JPEG(baseline jpeg)和渐进JPEG 网络上那些色色的照片都是.jpg格式的("色色"指 ...

  8. 使用JavaScript判断图片是否加载完成的三种实现方式

    有时需要获取图片的尺寸,这需要在图片加载完成以后才可以.有三种方式实现,下面一一介绍. 一.load事件 <!DOCTYPE HTML> <html> <head> ...

  9. Django的urls.py加载静态资源图片,TypeError: view must be a callable or a list/tuple in the case of include().

    Django的urls.py加载静态资源图片,TypeError: view must be a callable or a list/tuple in the case of include(). ...

随机推荐

  1. [转]Tomcat日志详解

    Tomcat下相关的日志文件: 1.Cataline引擎的日志文件,文件名为catalina.{date}.log 2.Tomcat下内部代码丢出的日志,文件名为localhost.{date}.lo ...

  2. 【转】【C++】【MFC】关于RADIO BUTTON的使用方法

    *原文地址:http://blog.csdn.net/c_cyoxi/article/details/23868979 1. 环境:VS2010 2. 分组 将radio1.radio2.radio3 ...

  3. sqlserver锁表、解锁、查看销表

    锁定数据库的一个表 代码如下 复制代码 SELECT * FROM table WITH (HOLDLOCK) 注意: 锁定数据库的一个表的区别 代码如下 复制代码 SELECT * FROM tab ...

  4. docker化php项目发布方式

    在生产环境的部署中将源代码打包到镜像以docker镜像的方式发布,并且运行环境中同时包含nginx和php-fpm用脚本或者supervisor管理服务进程,这样生产服务器将不需要任何依赖,只需要安装 ...

  5. java Vamei快速教程16 RTTI

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 运行时类型识别(RTTI, Run-Time Type Identificatio ...

  6. Android(java)学习笔记77:Android中assets文件夹资源的访问

    Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...

  7. Vue 父组件传值到子组件

    vue 父组件给子组件传值中 这里的AccessList就是子组件 如果 是静态传值的话直接  msg="xxx"就好 这里动态取值的话就  :msg=xxxxx ________ ...

  8. SAP销售订单屏幕增强行项目屏幕增强

    1.在vbap表中 append一个自定义结构,如下图: 2.TCODE:SE80     程序名:SAPMV45A   屏幕:8459 如图: 3.标记增强的屏幕字段 4.屏幕增强的位置 *& ...

  9. Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本

    Shell脚本使用汇总整理——mysql数据库5.7.8以前备份脚本 Shell脚本使用的基本知识点汇总详情见连接: https://www.cnblogs.com/lsy-blogs/p/92234 ...

  10. 【解决】ERROR in xxx.js from UglifyJs

    当我们运行打包脚本npm run build或者打包iosweexpack build ios有可能会遇到以下报错 ERROR in index.js from UglifyJs ![](https: ...