Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > xna教程(四)——在xna中绘制字体
【标  题】:xna教程(四)——在xna中绘制字体
【关键字】:xna,xna
【来  源】:http://blog.csdn.net/soilwork/archive/2006/09/25/1282641.aspx

xna教程(四)——在xna中绘制字体

Your Ad Here

作者: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="15x27" aw="14" lsb="0" />
        
            就像查字典一样,通过这个xml文件,我们就能定位所要的字符。
(一张Bitmap Font)
         Bitmap Font BuilderBitmap Font Generator都是创建位图字图不错的工具。特别是Bitmap Font Generator,会根据字体大小来排列字体,尽量减少位图尺寸。但这两个工具都不能很好的支持Unicode,也就是说,如果需要创建中文,那么可能会遇到一些问题。这里推荐使用XNAExtras工具包。XNAExtrasXNA Diares提供的一系列助手程序和类。包含了BMFontGen,一个用于创建位图字体的,支持Unicode的小工具;BitmapFont,可以使用BMFontGen创建的位图字体,方便的绘制字体的类。此外,他还包含了一些Demo,和一些用于绘制sprite的工具。如果有时间,最好仔细研究一下BitmapFont的源码,能让你对使用位图字体有更加深入的认识。万一觉得代码太复杂,那么不妨先看看 ziggyware 上另外一篇创建和绘制字体的教程。
--------------------------------------------------------------------------------上古分割线------------------------------------------------------
     
       上一次提到把Game类的AllowUserResizing设置为true就能改变窗口大小。不知你发现没有,缩放窗口时会出现一个bug,当前窗口会跑到桌面上所有窗口之下(如果你开了很多窗口)。解决方法是添加System.Windows.Forms;引用,接下来在程序初始化代码中为this.Window.ClientSizeChanged事件添加一个eventhandler,然后在eventhandler中添加如下代码:
((System.Windows.Forms.Form)System.Windows.Forms.Form.FromHandle(Window.Handle)).BringToFront();
ps:10月分的DirectX SDK中,将不再包含MDX 2.0,纪念一下~~~
 
   
单片机MP3开发笔记-4-PCB布线中:【上一篇】
Windows Mobile BLOG 问题集锦 2006-9-25:【下一篇】
【相关文章】
  • 中文教程 -《XNA入门指南》第四章 现已发布
  • (转)XNA教程(三)—— sprite绘制效率
  • 最新XNA开发游戏“Particle Wars”--粒子之战!
  • XNA教程(三)—— sprite绘制效率
  • XNA的地形3D地形组件-含代码(Terrain component source code)
  • XNA中文教程免费下载,三章中前两章已翻译完毕。(推荐!)
  • XNA最新免费教程电子书籍下载(附带源码),目前发布第4章(强烈推荐)
  • XNA中文教程 -《XNA入门指南》第三章 现已发布
  • 中文教程 -《XNA入门指南》第四章 发布预告
  • The XNA Framework Content Pipeline[翻译]
  • 【随机文章】
  • Java 内部类
  • 调用未知DLL中的导出函数
  • H.264开源解码器评测
  • 在Windows NT域和Windows 2000域之间建立信任关系
  • DotNet中解压缩ZIP和RAR文件
  • 在java中利用动态编译实现eval
  • 原位升级 Win XP崩溃的救命稻草
  • ASP3.0中的流控制能力(3)  
  • 小议Domain Model
  • Development Release: Linux Mint 2.1 Beta
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.