CDC::GetGlyphOutline

DWORD GetGlyphOutline(UINT nChar,UINT nFormat,LPGLYPHMETRIC lpgm,DWORD cbBuffer,LPVOID lpBuffer,const MAT2 FAR* lpmat2) const;

返回值:
如果cbBuffer为0或lpBuffer为NULL,则返回获取信息所需的缓冲区的大小和字节数。否则,成功返回正值;如果为-1,表示出错。

参数:
nChar指定字符,表明返回的信息。
nFormat指定函数返回信息的格式,它应为下列值之一,或为0:
含义
GGO_BITMAP返回字符位图。当函数返回时,lpBuffer指向的缓冲区包含1位/像素的位图,其行始于双倍字长的边界。
GGO_NATIVE返回使用设备单位的,用扫描的格式表示的曲线数据。指定值后,lpmat2指定的任何转换将被覆盖。当nFonmat值设置为0,函数填充GLYPHMETRICS结构但不返回边框符号数据。

lpgm在字符单元中描述字符放置情况的GLYPHMETRIC的指针。
cbBuffer含有函数拷贝的轮廓字符信息的缓冲区大小。如果值为0,且nFormat为GGO_BITMAP或GGO_NATIVE ,函数返回缓冲区需要的大小。
lpBuffer含有函数拷贝的轮廓字符信息的缓冲区指针。如果nFormat为GGO_NATIVE,在信息拷贝在TTPOLYGONHEADER和TTPOLYCURVE结构之中。如果值为0,且nFormat为GGO_BITMAP或GGO_NATIVE ,函数返回缓冲区需要的大小。
lpmat2包含有字符转换矩阵的MAT2结构的之中。该函数不能为NULL,即使nFormat已被设置为GGO_NATIVE

说明:
从当前字体中轮廓字符中获取轮廓字符曲线或位图。应用通过在lpmat2指向的结构中指定一个2维矩阵,使位图格式中的字符能够旋转。字符外形以一组轮廓返回。每一轮廓由TTPOLYGONHEADER结构描述,并带有足够多的TTPOLYCURVE结构来描述。所有点都以POINTFX结构返回,并用绝对位置的非相对运动来表示。有TTPOLYGONHEADER结构的成员函数pfxStart给定的起点,也是轮廓的起点。TTPOLYCURVE结构可以是多线记录或样条记录。多线记录是一系列点,点之间的连线描述了字符外形。样条记录是TrueType所使用的四边曲线。

请参阅:
CDC::GetOutlineTextMetrics, ::GetGlyphOutLine, GLYPHMETRICS, TTPOLYGONHEADER, TTPOLYCURVE