作者:clayman
仅供个人学习使用,请勿转载,勿用于任何商业用途。
由于本人水平有限,难免出错,不清楚的地方请大家以原著为准。欢迎大家和我多多交流。
Blog:http://blog.csdn.net/soilwork
clayman_joe@yahoo.com.cn
在XNA中绘制字体是一件很麻烦的事。由于XNA是跨平台的,而在Xbox 360中,并不存在系统字体,所以,目前的xna并不支持绘制字体。虽然我们仍然可以使用一些方法,在xna中调用GDI+来绘制字体,但这样你的程序就失去了跨平台性,同时,调用GDI+也会影响绘图的效率,因此,这不是一个推荐的方法。那应该如何来做呢?
目前较好的解决方案是使用位图字体(Bitmap Font)。所谓位图字体,其实就是预先把字体制作为一张位图,之后,就可以把位图当作字体来使用了。需要注意,由于字体已经制作为了位图,因此,大小是固定,所以应该根据需要,创建不同大小版本。当然,位图字体也提供了我们为游戏创建独一无二字体的能力。为了方便使用,通常把很多字体绘制到一张位图中,这就带来了另一个问题: 如何从一张图片中识别某个字符呢?很简单,常见的位图字图创建工具在创建位图的同时,还会创建一个xml文件。在这个文件中,记录了每个字符在位图中的位置,大小,下面是某个xml文件中,标示字母“A”的代码:
<glyph ch=”A” code=”0041″ bm=”0″ origin=”95,27″ size=”15×27″ aw=”14″ lsb=”0″ />
就像查字典一样,通过这个xml文件,我们就能定位所要的字符。
(一张Bitmap Font)
Bitmap Font Builder和Bitmap Font Generator都是创建位图字图不错的工具。特别是Bitmap Font Generator,会根据字体大小来排列字体,尽量减少位图尺寸。但这两个工具都不能很好的支持Unicode,也就是说,如果需要创建中文,那么可能会遇到一些问题。这里推荐使用XNAExtras工具包。XNAExtras是XNA Diares提供的一系列助手程序和类。包含了BMFontGen,一个用于创建位图字体的,支持Unicode的小工具;BitmapFont,可以使用BMFontGen创建的位图字体,方便的绘制字体的类。此外,他还包含了一些Demo,和一些用于绘制sprite的工具。如果有时间,最
- 本文固定链接: http://www.wy182000.com/2009/02/15/xna教程(四)——在xna中绘制字体/
- 转载请注明: wy182000 于 Studio 发表