当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

在CB中举行DirectX编程(3)[VC/C++编程]

赞助商链接



  本文“在CB中举行DirectX编程(3)[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

2.3 装入并显示图形文件

为了简明地阐明采取DirectDraw图形文件的显示技术,我们以示例程序dx2介绍图面、图形文件装入、图形缩放、图形在图面上显示等的初步概念和实现技术.

2.3.1 DirectDraw显示图形的技术

为了显示图象,DirectDraw必须首先拥有近似画布(canvas)的画图空间,DirectDraw并不向在DOS下那样简单地将显示缓存作为绘画的对象,而是通过DirectDraw对象成立各种差别种类的“图面”(Suerface),图面上的内容可以被利用程序安闲地拷贝、组合,生成千变万化的图形.

2.3.1.1图面分以下几种范例:

(1)主图面(Primary图面):即在屏幕上显示出来的图面,就是GDI用于绘制Windows用户界面的图面.每个DirectDraw对象只能有一个主图面,主图面的尺寸、位置和格局由系统当前的显示情势决意,不能窜改.

(2)后台图面(Off-screen图面):此类图面不能被直接看到.普通来说,后台图面常常用于作为游戏精灵动画、后台图形等部件的存储缓冲区.后台图面的尺寸是可以调整的,且可以有多个后台图面,其大小按照实际情形调整,不要太大或太小.一种典型的例子是:有一个精灵的动画由4张128点阵图形构成,那么可以将后台图面定义为256点的方阵,将这个动画序列存储下来读者大概认为可以成立一个比主图面大的后台图面以便保存游戏后台,这样可以便利地实现滚屏,但是,DirectDraw限制后台图面的尺寸不能比主图面大,除非系统的显示卡支持.可否实现大的后台图面我们将在今后论述.

(3)复合图面(Complex图面)和翻转链(Flipping Chain):这种图面主要用于生成平滑动画.有关技术待制作动画时介绍.

(4)覆盖图面(Overlay图面):这是一种由硬件支持的图面,DirectDraw不能仿真.有关技术在背面介绍.

DirectDraw可以把图面成立在显示内存或系统内存中,而显示内存又分为通例显示内存和AGP加快图形接口内存.由于显示内存容量是有限的,所以每个图面具体应当成立在哪部份存储区域中应当统筹筹划,普通将利用频繁,需求硬件加快或实现功效的图面安置在显示内存.假如您不指定图面成立的位置,DirectDraw将首先在通例显示内存成立图面,当通例显示内存不够时,若系统支持AGP内存,则先利用AGP内存,终究利用系统内存.

2.3.1.2 图形文件的装入

图形文件装入到图面并不象想象的那么简单,因为装入的图形的点阵大概与、图面的点阵差别,这就存在图形的缩放.别的,图形数据在内存中的移动、复制,也是需求处理的内容.关于Windows的设备无关位图,我们可以考虑利用Windows的功效实现:

(1)采取LoadImage函数装入图形文件

(2)采取图面的GetDC办法得到图面与GDI兼容的设备上下文

(3)采取BitBlt函数将图形数据拷贝到图面中

有关GDI编程请参看有关Windows编程资料,这里读者只需求知道固定的用法便可以了.

2.3.1.3 图面的丧失

在DirectDraw利用程序被最小化、屏幕显示方法改变或用户按Alt+Tab键切换当前利用程序时,图面将会丧失,因此在重新回到DirectDraw利用程序中时,必须用Restore办法恢复图面.遗憾的是,固然图面被恢复了,但此中图形数据却丧失了,需求重新绘制.

2.3.2 dx2运行历程

启动dx2程序后,只有第一个“履行”按钮可以利用,按下该按钮后,系统将成立DirectDraw对象,并设置为800*600全屏幕显示方法;按次序按下“成立主图面”、“成立

图2.2 dx2 装入并显示图形文件程序运行界面

后台图面”按钮,辨别成立对应屏幕显示的主图面和100*100点阵的后台图面;按下“后台图面装入图形”按钮,则图形文件view.bmp被一100*100点阵装入到后台图面,屏幕上看不见图形;再按下“主图面装入图形”按钮,view.bmp以200*100点阵缩放后装入到主图面(屏幕)的(0,0)位置,此时图形显示在屏幕左上角;持续按“拷贝后台图面到主图面”,将把后台图面的100*100图形显示在屏幕的(200,0)位置,我们可以看到两副一样的图形以差别的缩放比例并排显示在屏幕左上方;按下“图面丧失”后,屏幕被设置成640*480的显示方法,屏幕上显示出的图形消逝了;用“恢复丧失的图面”按钮重新设置显示方法为800*600(必须恢复显示方法,不然图面恢复将会失利)并恢复图面,此时,失去的图形在屏幕上仍旧看不见;最后,按“重新显示图形”来重新绘制view.bmp,屏幕重新展示原有的图形.


  以上是“在CB中举行DirectX编程(3)[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 在CB中呼应消息及自定义消息
  • 在CB中若何自定义属性(properties)
  • <b>在CB中举行DirectX编程(2)</b>
  • 在CB中举行DirectX编程(3)
  • <b>在CB中举行DirectX编程(4)</b>
  • 在CB中举行DirectX编程(1)
  • <b>在CB中实现流类的版本掌握</b>
  • <b>在CB中利用ACCESS数据库</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .