XNA中的图形特效与文字显示 [MSDN资料]

图形特效与文字显示

 

 摘要

使用 XNA Framework 设计游戏程序的时候可以利用 SpriteBatch 类别提供的功能显示游戏的内容供用户检视,SpriteBatch 类别提供了丰富的功能协助游戏程序绘制图画和文字,包括对所输出的图画和文字加入特殊的效果,例如放大/缩小、旋转、设定透明度、水平/垂直翻转、以及图层深度等游戏程序常常需要表现的效果。在这一篇文件中,我们将会为大家介绍利用 SpriteBatch 类别为游戏程序加上特殊效果的多种做法。

 认识 SpriteBatch 类别

XNA Framework 支持的 SpriteBatch 类别可以协助游戏程序输出 2 维的图片和文字,并提供批次输出的功能,避免频繁地输出游戏的内容造成闪烁的现象。

[提示]

虽然以 XNA 为基础的 3D 游戏输出 3 维的图形内容时不需要依靠 SpriteBatch 类别提供的功能,但是当 3D 游戏需要提供文字的功能选单供用户选择的时候,还是需要使用到 SpriteBatch 类别提供的文字输出功能。

表 1 所示为 SpriteBatch 类别常用的属性

表 1 :SpriteBatch 类别常用的属性
属性名称 说明
GraphicsDevice 取得游戏程序所使用的 GraphicsDevic 类别的对象的属性。

表 2 所示为 SpriteBatch 类别常用的方法:

表 2 :SpriteBatch 类别常用的方法
方法名称 说明
Begin 宣告批次绘图的动作开始。
Draw 绘制 2 维图案。
DrawString 绘制文字。
End 宣告批次绘图的动作结束,将从呼叫 Begin 方法之后绘制的所有内容输出到游戏窗口,并将 GraphicsDevice 的状态还原到呼叫 Begin 方法之前的状态。

SpriteBatch 类别的功能看似简单,但是负责绘制 2 维图案的 Draw 方法有高达7个不同的多载 (Overload) 版本,负责绘制文字的 DrawString 方法也有多达 6 个不同的多载版本,让游戏程序可以经由传入不同数量的参数,控制方法执行的结果,如果再加计列举型态的参数的内容值选择,就可以组合出各种繁复的变化,满足游戏程序就变更游戏程序内容的需求。

 SpriteBatch 类别与图形特效支持

SpriteBatch 类别支持绘制 2 维图案的 Draw 方法一共有以下 7 个不同的多载版本:

SpriteBatch.Draw(texture, destinationRectangle, color)

SpriteBatch.Draw(texture, destinationRectangle, sourceRectangle, color)

SpriteBatch.Draw(texture, destinationRectangle, sourceRectangle, color,

rotation, origin, effects, layerDepth)

SpriteBatch.Draw(texture, position, color)

SpriteBatch.Draw(texture, position, sourceRectangle, color)

SpriteBatch.Draw(texture, position, sourceRectangle, color, rotation,

origin, scale, effects, layerDepth)

SpriteBatch.Draw(texture, position, sourceRectangle, color, rotation,

origin, scale, effects, layerDepth)

其需要用到的参数请参考表3的详细说明:

表 3 :SpriteBatch 类别的 Draw 方法需要使用的参数
参数名称 说明
texture 型态为 Texture2D 类别的参数,负责管理欲绘制的 2 维图案。
destinationRectangle 负责描述欲绘制在游戏窗口上的物体的矩形。
color 负责控制欲绘制的图形的色调的参数,传入 Color.White 表示不改变欲显示的物体的色调。
sourceRectangle 指定欲用来取用来源对象的矩形。
scale 图案放大/缩小的倍数。
rotation 旋转角度。
origin 旋转图形时所依据的圆心。
effects 设定成 SpriteEffects.FlipHorizontally 表示要水平翻转图案,设定成 SpriteEffects.FlipVertically 表示要垂直翻转图案。
layerDepth 图层深度。0 代表前景层,1 代表背景层,可以搭配呼叫 SpriteBatch 类别的 Begin 方法传入的 SpriteSortMode 参数控制是否要对欲绘制的内容依 layerDepth 的内容值排序。
position 指定欲绘制的图案的左上角点坐标。

光是靠 SpriteBatch 类别的 Draw 方法的众多参数,就能够创造繁复的游戏效果,例如透过 color 参数设定图案的色调和透明度,透过 rotation 参数指定旋转图案的角度,利用 origin 参数设定图案旋转的圆心坐标,利用 effects 参数水平翻转或垂直翻转图案,利用 scale 参数指定放大/缩小图案的倍数,或是利用 layerDepth 参数设定图案要显示在那一个图层。


http://msdn.microsoft.com/zh-cn/windowsphone/gg570013.aspx 

posted @ 2012-03-10 23:51  把爱延续  阅读(593)  评论(0编辑  收藏  举报