1. 使用不同的字体
到目前为止,我们看到的所有文本示例都使用的是窗体默认的字体,但您可能会对要打印的文本进行修改,修改其字体的类型、大小以及样式。
这些例子全部将字体指定为this.Font,我们当然可以使用一种其他的字体。然而,Font对象的属性全部是只读的,所以必须在实例化字体对象时提供全部所需的信息。这些信息包括使用什么字体,字体的大小以及字体的样式(粗体,斜体等)。
如果您知道想使用的字体的名称,那么可以直接指定。不过,不同设备之间可用的字体会有所不同,即使是运行同一个版本的Windows Mobile系统。在将您的游戏发布给其他用户时,可能也会发现您想要的字体不存在。这不会导致错误,但您指定的字体会恢复成系统Mobile默认的字体。创建指定字体的代码如下所示:
Font textFont = new Font("Tahoma", 12, FontStyle.Regular);
一种更可预测的指定字体的方法是使用FontFamily参数,它可能的值为三种不同的字体类型:serif、sans-serif或者monospace。使用其中一种类型,GDI会尝试为请求的类型找到最合适的字体。虽然还是不能保证这样的字体一定存在,但如果有的话,您不需要知道该字体的名称,就可以选择该字体。通过FontFamily类来创建Font的代码如下所示:
Font textFont = new Font(FontFamily.GenericSansSerif, 12,
FontStyle.Regular);
本节中的两个示例都还演示了如何设置字体的大小;在本例中,字体大小为12点,点是一种与分辨率无关的量度,所以不管宿主手机屏幕的分辨率是多少,您的字体看上去大约都有相同的物理尺寸。
最后一个参数用于选择字体的样式。其值可以是Regular(不应用任何样式),或者是Bold、Italic、Underline及Strikeout的组合。这些标志可以组合起来为字体创建复杂的样式;例如,下面的代码将创建一个粗体并且是斜体的字体。
Font textFont = new Font(FontFamily.GenericSansSerif, 12, FontStyle.Bold |
FontStyle.Italic);
2. 使文本居中
当在完整的桌面版.NET Framework中使用GDI处理文本时,StringFormat对象包含了各种类型的附加属性,其中包括使文本在屏幕的某个位置上居中或者右对齐这个非常有用的功能。但是在.NET CF中没有包含该功能,所以我们必须自己来实现它。幸运的是,实现这个功能并不是很难。我们可以使用Graphics对象中的MeasureString函数来获取文本显示在屏幕上时这些文本所占区域的宽度和高度。只要知道了文本的宽度,就可以很容易地将文本按照需要对齐了。
例如,我们想要让一些文本在屏幕上居中显示,可以首先将屏幕的宽度除以2,从而得到屏幕的中心点。然后减去这些文本的宽度的一半,那么结果就应当是文本的左半部分会显示在屏幕的左半边,右半部分显示在屏幕的右半边—— 也就是说,文本居中了(如图3-8所示)。