当往屏幕上绘制多个精灵的时候,您可以(而且也应该,出于速度的考虑)在SpriteBatch.Begin和SpriteBatch.End之间绘制尽可能多的精灵。实际上您应该做的是在游戏中用一个SpriteBatch对象然后在Begin和End之间绘制所有的2D图像。
就像您在图3-4中看到的那样,我们使用的XNA LOGO有很难看的白色背景,如果它变为透明的话或许看起来要好很多。
有两种方法可以使图像部分透明:要么图像文件本身有透明的背景,要么将图像中您希望显示为透明的部分设置为洋红色(255, 0, 255)——XNA会自动将洋红色渲染成透明的。透明度可以存储到某些文件格式中(如.png文件)用作alpha 通道。这种格式不仅仅包含RGB值,每个像素还有一个额外的alpha通道(RGBA中的A)来确定像素的透明度。
如果您有一个图像处理工具,您可以用它来为您的图像创建透明背景。Paint.Net是一个用.NET编写的很棒的免费图像处理工具,您可以从http://www.getpaint.net获得它。
接下来的例子中我将使用另一个带透明背景的XNA LOGO,也包含在本部分的源码中,文件名是logo_trans.png。
用同样的方法将透明XNA LOGO图像文件添加到项目中:右键点击解决方案资源管理器中的CollisionContent\Images节点,选择Add→Existing Item,然后定位到第3章的源码的BasicSprite文件夹,logo_trans.png在BasicSprite\CollisionCollision\Content\Images文件夹下。不要移除项目中的另一个XNA LOGO文件,因为您还要用它做绘制多个图像的试验。
将透明的logo加入到项目中之后,需要为新的logo添加另一个类成员变量Texture2D: