GetGlyphOutline

本文详细介绍了如何通过Windows API函数GetGlyphOutline获取指定设备环境下的TrueType字体的字符轮廓或位图,包括参数解析、返回值解释及注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数功能:该函数取得被选进指定设备环境的TrueType字体的字符轮廓或 位图
  函数原型:DWORD GetGlyphOutline(HDC hdc, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm, DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2);
  参数:
  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_GRAY4_BITMAP指定时,返回的位图是一种双字对齐、面向行的,其值在0-16之间的字节数组。当指定GGO_GRAY8_BITMAP时,返回的位图是一种双字对齐,面向行的,其值在0-64之间的字节数组。应用程序可以指定lpMatrix参数里的2-对-2转换矩阵来将以位图格式获得的字符旋转。
  速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:不支持;头文件:wingdi.h;库文件:gdi32.lib;Unicode:在Windows NT环境下实现为Unicode和ANSI两种版本。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值