以游戏文件来说,使用的位图数量相当多,因此都会先将位图存成文件,等到程序需要时再将文件加载到窗口中。将位图从文件加载带绘图窗口中必须经过一下几个步骤。
<1>从文件中加载位图对象
<2>建立一个与窗口DC兼容的内存DC
<3>内存DC只用步骤1中所建立的位图对象
<4>将内存DC的内容粘贴到窗口DC中,完成显像操作。
下面进行这四个步骤的详细说明:
步骤一:加载位图
要从文件加载位图,常常使用LoadImage()函数。
HANDLELoadImage(
HINSTANCEhinst,//包含目标位图的DLL或exe文件的模块句柄
LPCTSTRlpszName,
UINTuType,
intcxDesired,
intcyDesired,
UINTfuLoad
);
下面是该函数参数的详细说明。
▲HINSTANCE来源实体:包含位图所在的实体,若要加载的位图在硬盘或者资源文件中,此项设置为"NULL"。
▲LPCTSTR名称:要加载的位图所在的路径与文件名或者资源名称
▲UINT位图类型:加载位图的类型,有下面三种:
★IMAGE_BITMAP:加载的位图为一般图文件,扩展名为".bmp"
★IMAGE_CUSOR:加载的位图为光标图标,扩展名为".cur"
★IMAGE_ICON:加载的位图为图标,扩展名为".ico"
▲int加载宽度:位图加载的宽度,单位为像素
▲int加载高度:位图加载的高度,单位为像素
▲UINT加载方式:设定位图的加载方式,若是从文件中加载位图,则设为"LR_LOADFROMFILE"
步骤二:建立与窗口DC兼容的内存DC
我们调用CreateCompatible()函数来建立内存DC
HDCCreateCompatibleDC(HDChdc);//建立兼容DC
函数中输出的唯一参数就是要与内存DC兼容的目的DC
跟窗口DC一样,内存DC使用后也必须进行释放的操作,释放内存DC所调用的函数为DeleteDC()
DeleteDC(HDCDC名称);//释放DC
步骤三:选用位图对象
位图对象是GDI的6种对象之一,内存DC选用位图对象的方法和前面介绍的选用画笔或画刷的方式相同,都是通过调用SelectObject()函数来实现。
步骤四:贴图
把内存DC中的位图复制到显示的DC上,即"贴图"。这个操作使用的函数是BitBlt(),后面我们会经常用到他。这个函数的定义如下
BOOLBitBlt(
intx,//目的DCx坐标
inty,//目的DCy坐标
intnWidth,//贴到目的DC的宽度
intnHeight,//贴到目的DC的高度
CDC*pSrcDC,//来源DC
intxSrc,//来源DCx坐标
intySrc,//来源DCy坐标
DWORDdwRop//贴图方式();
);
下面我们用一个实例来看看如何从文件中加载位图:
将bg.bmp图片放到该工程根目录下,然后进行编译并运行,就可以得到如下窗口:
笔记五到这里就结束了。
本节源代码请点击这里下载:【Visual C++】Code_Note_5
请大家继续关注【Visual C++】游戏开发笔记系列。
非常希望能与大家一起交流,共同学习和进步。
最后,谢谢大家一直的支持~~~
The end
分享到:
相关推荐
《Visual C++ 编程技巧典型案例解析——图形图像处理与数据库篇》是针对使用Microsoft的Visual C++开发环境进行图形图像处理和数据库管理的实践指南。这本书深入浅出地介绍了如何利用Visual C++的强大功能来解决这两...
【Visual C++】游戏开发笔记之六-游戏画面绘图(三)透明特效的制作方法主要探讨了如何在2D游戏中实现透明效果。透明效果在游戏画面中至关重要,它可以使得游戏元素与背景融合,提高视觉体验。在本教程中,作者毛星云...
【Visual C++】游戏开发笔记4主要探讨了使用GDI(图形设备接口)进行游戏画面绘图的基础知识。GDI是Windows API中的一个重要组件,负责管理所有显像设备的图像显示和输出。本文将深入介绍如何利用GDI进行游戏画面的...
《使用Visual C++和DirectX开发游戏:仿超级玛丽》 在游戏开发领域,Visual C++和DirectX是一对常见的组合,尤其适用于2D和3D游戏的制作。本项目以经典游戏“超级玛丽”为蓝本,展示了如何利用这两款工具进行游戏...
博文的配套源码 《【Visual C++】游戏开发笔记之五——游戏画面绘图(二)绘制位图》 ,原文地址为http://blog.csdn.net/zhmxy555/article/details/7335103, 源码编译环境为vs2010. 我的博客地址是...
在《Visual C++ 实践与提高—图形图像编程篇》中,我们主要探讨的是如何使用Microsoft的Visual C++开发环境进行高效且富有表现力的图形和图像编程。这个主题涵盖了许多关键知识点,包括Windows API、GDI(Graphics ...
《Visual C++开发实例大全 基础卷 源码》是一本专注于初学者和进阶者学习Visual C++编程的实践性书籍。通过提供第1章节至第9章节的源代码,这本书旨在帮助读者深入理解Visual C++的基础概念和技术,同时也提供了丰富...
在《Visual C++ 实践与提高—图形图像编程篇》中,我们主要探讨的是如何使用Microsoft的Visual C++开发环境进行高效且丰富的图形图像编程。这个主题涵盖了从基础的GDI(Graphics Device Interface)到更高级的...
在游戏开发中,单一背景滚动是一项基础且重要的技术,它为玩家创造了一个动态的游戏环境,使得游戏场景在屏幕上的移动显得更加生动和自然。在【Visual C++】中实现这一功能,可以为初学者提供宝贵的编程经验,同时也...
本篇文章将深入探讨利用Microsoft的Visual C++和GDI(Graphics Device Interface)技术开发的一款经典游戏——连连看。GDI是Windows操作系统中的一个核心组件,用于处理图形和文本输出,而Visual C++则是一款强大的...
在Visual C++环境中,游戏编程涉及许多技术,其中之一就是透明动画的实现。本文将深入探讨如何使用Visual C++来创建具有透明效果的动画,这对于创建复杂的2D或3D游戏场景至关重要。 首先,透明动画的核心在于Alpha...
在本文中,我们将深入探讨如何使用Visual C++的MFC(Microsoft Foundation Classes)库来实现打开位图并进行缩放显示的功能。MFC是微软提供的一套C++类库,它封装了Windows API,使开发者能更方便地创建Windows应用...
Visual C++是由微软开发的一款集成开发环境(IDE),它为C++编程语言提供了强大的支持,包括代码编辑、调试、构建管理等功能。在图形编程方面,Visual C++利用MFC(Microsoft Foundation Classes)库,为开发者提供...
《Visual C++ 6.0实用教程代码》是一份针对初学者和中级开发者的资源,旨在帮助他们深入理解和掌握Visual C++ 6.0编程环境。这个教程包含了22个章节,每个章节都对应着一个特定的主题,通过实际的代码示例来教授编程...
《Visual C++图形图像编程技巧》是一本由丁有和编著的专业图书,主要探讨了如何利用Microsoft的Visual C++开发环境进行图形图像处理和编程。出版于2000年,这本书对于当时的程序员和爱好者来说,是学习图形界面设计...
MFC是微软提供的一套C++类库,用于简化Windows应用程序开发。下面我们将深入探讨位图变换的相关知识点。 1. **位图基础**: - **位图(Bitmap)**:位图是一种像素图像,每个像素都有自己的颜色信息。在Windows...
### Visual C++游戏编程基础 #### 一、窗口 在使用Visual C++进行游戏编程时,窗口是构建用户界面的基础。本章节将详细介绍如何利用Visual C++和MFC(Microsoft Foundation Classes)创建、管理和操作窗口。 ####...
为了实现自绘窗口的功能,开发者需要掌握一些基本的绘图技术,比如使用`CBitmap`类加载和绘制位图: ```cpp CBitmap *pBitmap = new CBitmap; BITMAP BmpInfo; CBitmap *pOldBitmap; CDC *pDisplayMemDC = new CDC;...
在Visual C++中,开发者可以利用GDI函数来绘制图形和文本,实现复杂的绘图操作。 2. **GDI+**:作为GDI的升级版,GDI+提供了更多的矢量图形和图像处理功能,支持贝塞尔曲线、透明度、旋转等效果。通过GDI+,开发者...