GetGlyphOutline函数检索在指定设备上下文中选择的TrueType字体中的字符的轮廓或位图。
DWORD GetGlyphOutline(
HDC 【HDC】, | //设备上下文的句柄 |
UINT 【飞行】, | //查询字符 |
UINT 【UFormat】, | //返回的数据格式 |
LPGLYPHMETRICS 【lpgm】, | //度量结构的地址 |
DWORD 【cbBuffer】, | //数据缓冲区大小 |
LPVOID 【lpvBuffer】, | //数据缓冲区的地址 |
CONST MAT2 【* lpmat2】 | //转换矩阵结构的地址 |
); |
参数
【HDC】
标识设备上下文。
【飞行】
指定要返回数据的字符。
【UFormat】
指定函数检索的数据格式。使用以下值之一:
值 | 含义 |
GGO_BITMAP | 该函数检索字形位图。有关内存分配的信息,请参阅以下备注部分。 |
GGO_NATIVE | 该函数以光栅化器的本机格式检索曲线数据点,并使用字体的设计单位。指定此值时,将忽略【lpMatrix】参数中指定的任何变换。 |
GGO_METRICS | 该函数仅检索【lpgm】指定的GLYPHMETRICS结构。其他缓冲区被忽略。该值会在失败时影响函数返回值的含义;请参阅以下返回值部分。 |
GGO_GRAY2_BITMAP | 该函数检索包含5级灰度的字形位图。 |
GGO_GRAY4_BITMAP | 该函数检索包含17个灰度级别的字形位图。 |
GGO_GRAY8_BITMAP | 该函数检索包含65级灰度的字形位图。 |
请注意,对于GGO_GRAYn_BITMAP值,该函数检索包含n ^ 2 + 1(n平方加1)灰度级别的字形位图。
【lpgm】
指向GLYPHMETRICS结构,描述字符单元格中字形的位置。
【cbBuffer】
指定函数复制关于轮廓字符的信息的缓冲区的大小。如果该值为零,则该函数返回缓冲区所需的大小。
【lpvBuffer】
指向缓冲区的功能是复制关于轮廓字符的信息。如果此值为NULL,则该函数返回缓冲区所需的大小。
【lpmat2】
指向MAT2结构,指定字符的转换矩阵。
返回值
如果指定了GGO_BITMAP,GGO_GRAY2_BITMAP,GGO_GRAY4_BITMAP,GGO_GRAY8_BITMAP或GGO_NATIVE,并且函数成功,返回值大于零;否则返回值为GDI_ERROR。en如果指定了这些标志之一,缓冲区大小或地址为零,则返回值指定所需的缓冲区大小(以字节为单位)。
如果指定了GGO_METRICS,并且函数失败,则返回值为GDI_ERROR。
备注
GetGlyphOutline函数返回的字形大纲是一个网格拟合字形。(网格拟合的字形是已修改的字形,以使其位图符合尽可能接近于原始图案的设计。)如果应用程序需要未修改的字形大纲,则可以请求字符的字形轮廓在一个字体的大小等于字体的em单位。字体的单位的值存储在OUTLINETEXTMETRIC结构的otmEMSquare成员中。
当指定GGO_BITMAP时,由GetGlyphOutline返回的字形位图是双字对齐的面向行的单色位图。当指定GGO_GRAY2_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到4。当指定GGO_GRAY4_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到16。当指定GGO_GRAY8_BITMAP时,返回的位图是一个双字对齐的,面向行的字节数组,其值的范围为0到255。
应用程序可以通过在【lpMatrix】参数中指定2×2的变换矩阵来旋转以位图格式检索的字符。
也可以看看
FORM_INFO_1, GetOutlineTextMetrics, GLYPHMETRICS, MAT2, OUTLINETEXTMETRIC, POINT