VC_win32_API_游戏开发(最新).ppt

  1. 1、本文档共74页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WinApiDemo的运行画面 3.游戏实现原理与Window GDI绘图 3.1 游戏实现的基本原理 3.2 Window GDI基本概念 3.3 利用GDI实现游戏中的绘图 3.1 游戏实现的基本原理 3.2 Window GDI基本概念 GDI,Graphics Device Interface,即图形设备接口,是Windows API的一个重要组成部分。 GDI是Windows图形显示程序与实际物理设备之间的桥梁,GDI使得用户无需关心具体设备的细节,而只需在一 个虚拟的环境(即逻辑设备)中进行操作。 GDI用一套通用的图形对象来向屏幕,內存甚至是打印机绘图。 GDI函数大致可分类为: 设备上下文函数:如GetDC、CreateDC、DeleteDC。 画线函数:如LineTo、Polyline、Arc。 填充画图函数:如Ellipse、FillRect、Pie。 画图属性函数:如 SetBkColor、SetBkMode、SetTextColor。 文本、字体函数:如TextOut、GetFontData。 位图函数:如 SetPixel、BitBlt、StretchBlt。 坐标函数:如DPtoLP、LPtoDP、ScreenToClient、 ClientToScreen。 映射函数:如SetMapMode、SetWindowExtEx、SetViewportExtEx。 元文件函数:如PlayMetaFile、SetWinMetaFileBits。 区域函数:如FillRgn、FrameRgn、InvertRgn。 路径函 数:如BeginPath、EndPath、StrokeAndFillPath。 裁剪函数:如SelectClipRgn、 SelectClipPath。 设备上下文 在GDI编程中,几乎所有的操作都围绕设备上下文(DC)展开。 设备上下文,Device Context,简称DC,是Windows 使用的一种结构,所有GDI操作前都需取得特定设备的上下文。 设备上下文的句柄是HDC。 HDC是一个你可以向其绘图的句柄;它可以代表整个屏幕,一个窗口的客戶区域,一个存在內存中的位图,或是一个打印机。 例如,如果你想在一个窗口上绘图,首先你要用GetDC()来获取代表这个窗口的HDC,然后你就可以用任何以HDC为参数的GDI函数来绘图了。 位图 位图可以用LoadBitmap()来完成大多数的基本操作,比如简单地装入一个位图资源。 GDI不能直接用位图对象来绘图,因为绘图操作已经被设备上下文抽象了,只能通过设备上下文来绘制位图。 利用位图绘图的大体思路是:把位图对象装入设备上下文,通过设备上下文把位图显示在屏幕上。 3.3 利用GDI实现游戏中的绘图 游戏中的绘图主要通过是绘制位图来实现的。 在游戏中,因为角色位图的位置是不断变化的,所以设备上下文中的合成位图的内容也是不断变化的。 为了实现游戏画面的刷新,通常是利用缓存设备上下文来保存下一帧的合成位图对象。 下一帧的合成位图对象是根据角色位图的实时位置和状态重新渲染后的结果。 下面举例给出了利用GDI实现位图绘图的主要步骤: 定义windows屏幕设备句柄变量windowDC; 定义窗口缓冲设备句柄变量bufferDC; 定义一个位图内存设备句柄变量picDC; 定义一个位图句柄变量picBMP; 定义一个缓冲位图句柄变量bufferBMP; 调用GetDC()获取当前整个屏幕设备的句柄值,赋给windowDC; 调用CreateCompatibleDC()创建与windowDC兼容的内存设备,并将其句柄值赋给位图内存设备变量picDC。 调用CreateCompatibleDC()创建与windowDC兼容的内存设备,并其句柄值赋给窗口缓冲设备变量bufferDC。 调用CreateCompatibleBitmap()创建与windowDC兼容的位图对象,并将该位图的句柄值赋给bufferBMP。 调用LoadBitmap()加载指定位图资源,并获取给该位图资源的句柄值,赋给picBMP。 调用SelectObject()将缓冲位图句柄bufferBMP和窗口缓冲设备句柄bufferDC关联。 调用SelectObject()将位图句柄picBMP和位图内存设备picDC关联。 两次调用特定运算的BitBlt()函数来对位图内存设备picDC中的位图进行“去背”处理后,把结果保存在窗口缓冲设备bufferDC中。 调用BitBlt()函数将窗口缓冲设备中的全部图像内容拷贝到屏幕设备windowDC上显示。 GetDC()函数 函数功能:该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备

文档评论(0)

xiaohuer + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档