GetGlyphOutline()函数

函数功能:该函数取得被选进指定设备环境的TrueType字体的字符轮廓或位图。

参数:

hdc:设备环境句柄。

uChar:指定被返回其数据的字符。

uFormat:指定函数取得的数据的格式。可用下列值之一:各值含义为:

GGO_BITMAP:函数获得字形位图。要得到善于内存分配的信息,参见后面备注部分。

GGO_NATIVE:函数获得光栅器(rasterrizer)的本地格式的曲线数据点,并使用字体的设计单位,当指定了此值,由lpMatrix指定的任何变换都被忽略。

GGO_METRICS:函数只获得由lpgm指定的GLYPHMETRICS结构。其余缓冲区被忽徊,此值影响函数失败时返回值的含义,参见后面的返回值部分。

GGO_GRAY2_BITMAP:函数获得含5级灰色的字形位图。

GGO_GRAY4_BITMAP:函数获得含17级灰色的字形位图。

GGO_GRAY8_BITMAP:函数获得含65级灰色的字形位图。

注意:对GGO_GRAYnBITMAP值,函数获得n*n+1级灰色的字形位图。

lpgm:指向结构GLYPHMETRICS的指针,用于描述字表在字符单元的放置。

cbBuffer:指向定缓冲区的大小,该缓冲区用于复制轮廓字符的信息。如果此值为零,函数返回需要的缓冲区大小。

lpvBuffer:指向缓冲区的指针,该缓冲区用于复制轮廓字符的信息,如果此值为NULL,函数返回需要的缓冲区大小。

lpmat2:指向MAT2结构的指针,该结构为字符信息转换矩阵。

返回值:如果指定了GGO_BITMAP, GGO_GRAY2_BITMAP, GGO_GRAY4_BITMAP, GGO_GRAY8_BITMAP,或GGO_NATIVE值且函数调用成功,返回值将大于0,否则,返回值是GDI_ERROR。如果指定了上述之一值,但缓冲区或地址是0,则返回需要的缓冲区的字节数。

如果GGO_METRICS被指定且函数调用失败,返回值是GDI_ERROR。

Windows NT:若想获得更多错误信息,请调用GetLastError函数。

备注:GetGlyphOutline返回的字形轮廓是一种配有网络的字形(配有网络的字形是指一种被修改的字形,使其点阵图尽可能地与字形的原始设计一致)。如果一个应用程序需要一种无修改的字形轮廓,应该在那些大小等于字体的em单位的字体中要求一个字符的字形轮廓,字体的em单位值存在于结构OUTLINETEXTMETRIC的otmEMSquare成员中。

由GetGlyphOutline指定GGO_BITMAP返回的字形位图是一种双字对齐、面向行的单色位图,当指定GGO_GRAY2_BITMAP,返回的位图是一种双字对齐、面向行的,其值在0-4之间的字节数组。当GGO_GRAY8_BITMAP指定时,返回的位图是一种双字对齐、面向行的,其值在0-16之间的字节数组。当指定GGO_GRAY8_BITMAP时,返回的位图是一种双字对齐,面向行的,其值在0-255之间的字节数组。应用程序可以指定lpMatrix参数里的2-对-2转换矩阵来将以位图格式获得的字符旋转。

速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT环境下实现为Unicode和ANSI两种版本。