简单的文本显示

在屏幕上显示文本最简单的、最快捷的方法莫过于使用设备环境中的成员函数TextOut()。该函数要求传递参数x坐标和y坐标来确定起始的文本输出位置,另外还需要一个CString型的参数来保存待显示的文本。

TextOut()类似的实现文本显示的功能函数还有好几个。TabbedTextOut()函数能够实现制表字符。PollyTextOut()函数可以通过一次函数调用来显示一个字符串数组。ExtTextOut()函数允许你指定一些附加的参数来决定文本以何种样式显示。

设置文本对齐方式

通过函数SetTextAlign(),你可以将文本设定围绕某一个指定点以不同的对齐方式对齐。该设备环境的成员函数使用一系列的标志来确定文本的对齐方式,以及显示文本之后光标如何更新。

在函数SetTextAlign()中使用的文本对齐标志

对齐标志

文本显示效果

TA_LEFT

文本对齐在指定点的右面

TA_RIGHT

文本对齐在指定点的左面

TA_CENTER

文本以指定点为中点居中显示

TA_TOP

文本对齐在指定点的下面

TA_BOTTOM

文本对齐在指定点的上面

TA_BASELINE

文本围绕过指定点的基准线对齐

TA_UPDATECP

调用TextOut函数后重画光标

TA_NOUPDATECP

调用TextOut函数后不重画光标

 

矩形中文本的剪裁

函数ExtTextOut()TextOut()跟复杂、也更高级的形式。可以通过传递一个“ETO_CLIPPED”的标志让他来实现文本的剪裁。和TextOut()函数一样,ExtTextOut()需要x坐标和y坐标作为头两个参数。你可以传递两个标志值,作为的三个参数,如ETO_CLIPPED表示剪裁。你还可以将ETO_CLIPPED标志和ETO_OPAQUE标志组合起来,这时即使已经设置为透明模式,你也可以使用不透明的文本。如果你想既不想剪裁,也不需要显示不透明文本,你可以用0作为第三个参数。第四个参数需要一个CRect类型的对象,如果在第三个参数中你设置了剪裁标志,函数将用这个矩形来剪裁文本。第五个参数是待显示的文本(保存在一个CString类型的对象中)。最后,你可以传一个空的字符数组作为第六个参数,这个参数也可以是一个空指针(NULL)。

 

CreateFont()函数创建字体

CreateFont()函数的参数

BOOL CreateFont( int nHeight, int nWidth, int nEscapement, int nOrientation, int nWeight, BYTE bltalic, BYTE bUnderline, BYTE cStrikeOut, BYTE nCharSet, BYTE nOutPrecison, BYTE nClipPrecison, BYTE nQuality, BYTE nPitchAndFamity, LPCSTR lpszFacename );

设置字体的高度和宽度

CreateFont()函数的前两个参数决定了字体的高度和宽度。

设置文本的倾斜和方向

倾斜和方向分别指文本在打印时的倾斜角度(通常是沿水平方向)和字符本身的旋转角度。

nEscapement参数允许你指定文本在显示时的一个倾斜角度,这个角度是以X轴为参考,参数值必须为实际倾斜角度的10倍。例如你指定参数为900时,实际的文本是垂直显示。

nOritentation参数允许你指定字符显示时的一个倾斜角度,这个角度也是一X轴为参考的,参数值为实际旋转角度的10倍。

设置加粗、斜体、下划线和加删除线

接下来的四个参数用来设置字符的粗度(粗字体和瘦字体)和诸如斜体、下划线和加删除线之类的模式。

﹒通过nWeight参数,可以改变字符显示时的粗细程度,这个值可以从0(瘦体)到1000(胖体)。

字体粗度标志

标志

参数值

FW_DONTCARE

0

FW_THIN

100

FW_EXTRALIGHT

200

FW_LIGHT

300

FW_NORMAL

400

FW_MEDIUM

500

FW_SEMIBOLD

600

FW_BOLD

700

FW_EXTRABOLD

800

FW_HEAVY

900

 

﹒当参数bItalic被设置为TRUE时,文本将以斜体字显示。

﹒当参数bUnderline被设置为TRUE时,文本将以下划线的方式显示。

﹒当参数bStrikeOut被设置为TRUE时,文本将以加删除线的方式显示。

 

设置显示的质量和精度

﹒参数nCharSet用来指定使用哪一字符集。这个参数通常被设置ANSI_CHARSET,此时表示使用的是标准的ANSI字符集。有时候为了使用更多的 符号,需要将此参数指定为SYMBOL_CHARSET而不是普通的字符集。

﹒参数nOutPrecision用来确定映象机制如何根据提供的参数来选择合适的字体。这个参数通常被设置为OUT_DEFAULT_PRECIS,如果要使用TrueType(微软和Apple公司共同研制的一种字形标准)字体时,则需要将此参数设置成OUT_TT_PRECIS

﹒参数nClipPrecision用来确定裁剪的精度,这个参数通常被设置为CLIP_DEFAULT_PRECIS

﹒参数nQuality用来确定在何种程度上使得字符最终的显示效果跟所指定的其他参数相吻合。这一参数可取的值有DEFAULT_QUALITYDRAFT_QUALITYPROOF_QUALITY

﹒参数nPitchAndFanily可以一次同时设置两个方面的内容。

间距设置

间距标志

说明

DEFAULT_PITCH

字体的缺省设置

VARIABLE_PITCH

可变的字体间距

FIXED_PITCH

固定的字符间距,用于终端仿真程序

下表是参数nPitchAndFamily的可取值。

字体属性设置

属性标识

说明

FF_DECORATIVE

花哨的字体

FF_DONTCARE

DONTCARE——不关心

FF_MODERN

固定间距的字体

FF_ROMAN

合适空白和可变间距的字体

FF_SCRIPT

手写体

FF_SWISS

合适的空白但没有附加线

TMPF_TRUETYPE

必须先设置为TrueType字体

 

选择字体名

通过参数lpszFacename,可以为当前装入并正在使用的字体指定一个名字。