文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络程序开发C++Builder在C++ Builder中进行DirectX编程(2)
精品推荐
特别推荐
·菜鸟入门 认识C#中的委托和事件
·WINDOWS下的动态鼠标光标控制
热点TOP10
·计算机短信DIY
·利用C++ Builder开发动画DLL
·C++ Builder下数据库报表Master/Detail关系功能的实现
·用Builder C++设计串行口COM1或COM2的读写操作
·在C++ Builder中进行DirectX编程(2)
·QuickReport基本知识
·C++Builder IDE使用技巧与快捷键
·利用C++Builder遍历文件目录
·ODBC中的同步与异步执行模式
·利用C++ Builder 5.0创建用户自己的网上聊天程序

在C++ Builder中进行DirectX编程(2)

日期:2008年6月7日 作者: 查看:[大字体 中字体 小字体]



  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,屏幕重新展现原有的图形。



2.3.3 dx2程序的编程实现

2.2.2 dx1编程实现

启动C++ Builder后在窗口Form1中设计如图2.2的操作界面,各对象相关属性设置如表2.3:

控件对象类型
控件对象名称
相关属性
属性值

TForm
Form1
Caption
DirectX 练习程序1

TLabel
Label1
Caption
运行状态:

TLabel
Label2
Caption
设备的枚举

Tlabel
Label3
Caption
显示模式DDraw2

TEdit
Edit1
Text

[1] [2] 下一页 




上一篇:在C++Builder中取得命令行参数

下一篇:C++Builder开发Web应用程序
相关文章:
·如何进行局域网设置
·在公司内部如何进行VLAN划分?
·C语言编程常见问题解答之常用函数的包含文件(1)
·DirectX 10 for Windows XP修改版下载
·Windows黑客编程基础
·巧用排除法进行网络中故障的排除简介
·Windows下C语言网络编程快速入门
·使用ADS1.2进行嵌入式软件开发
·右下角漂浮图像,能跟随滚动条进行上下移动
·C语言编程易犯毛病集合
相关软件:

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot