共用方式為


GetGlyphOutlineA 函式 (wingdi.h)

GetGlyphOutline 函式會擷取 TrueType 字型中選取至指定裝置內容之字元的外框或位圖。

語法

DWORD GetGlyphOutlineA(
  [in]  HDC            hdc,
  [in]  UINT           uChar,
  [in]  UINT           fuFormat,
  [out] LPGLYPHMETRICS lpgm,
  [in]  DWORD          cjBuffer,
  [out] LPVOID         pvBuffer,
  [in]  const MAT2     *lpmat2
);

參數

[in] hdc

裝置內容的句柄。

[in] uChar

要傳回數據的字元。

[in] fuFormat

函式擷取的數據格式。 此參數可以是下列其中一個值。

價值 意義
GGO_BEZIER
函式會將曲線數據擷取為立方貝塞爾曲線(不是二次方曲線格式)。
GGO_BITMAP
函式會擷取圖像點陣圖。 如需記憶體配置的相關信息,請參閱下列一節。
GGO_GLYPH_INDEX
表示 uChar 參數是 TrueType Glyph Index,而不是字元碼。 如需 Glyph 索引的其他備註,請參閱 ExtTextOut 函式。
GGO_GRAY2_BITMAP
函式會擷取包含五個灰色層級的字元位圖。
GGO_GRAY4_BITMAP
函式會擷取包含17個灰色層級的字元點陣圖。
GGO_GRAY8_BITMAP
函式會擷取包含65個灰色層級的字元點陣圖。
GGO_METRICS
函式只會擷取由 lpgm所指定的 GLYPHMETRICS 結構。 會忽略 lpvBuffer。 此值會影響失敗時函式傳回值的意義;請參閱傳回值一節。
GGO_NATIVE
函式會擷取轉譯器原生格式的曲線數據點,並使用字型的設計單位。
GGO_UNHINTED
函式只會傳回未隱藏的外框。 此旗標只適用於GGO_BEZIER和GGO_NATIVE。
 

請注意,針對GGO_GRAYn_BITMAP值,函式會擷取包含 n^2+1 (n 平方加一) 灰色層級的字元位圖。

[out] lpgm

GLYPHMETRICS 結構的指標,描述字元儲存格中字元的位置。

[in] cjBuffer

緩衝區的大小,以位元組為單位(*lpvBuffer),其中函式是複製大綱字元的相關信息。 如果此值為零,函式會傳回緩衝區的必要大小。

[out] pvBuffer

緩衝區的指標,可接收大綱字元的相關信息。 如果此值 NULL,則函式會傳回所需的緩衝區大小。

[in] lpmat2

指定字元轉換矩陣之 MAT2 結構的指標。

傳回值

如果指定GGO_BITMAP、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP或GGO_NATIVE,且函式成功,則傳回值會大於零:否則,傳回值會GDI_ERROR。 如果指定其中一個旗標,且緩衝區大小或位址為零,則傳回值會以位元組為單位指定所需的緩衝區大小。

如果指定GGO_METRICS且函式失敗,則傳回值會GDI_ERROR。

言論

getGlyphOutline 函式所傳回 字元外框適用於網格線配適字元。 (網格線式圖像是經過修改的圖像,使其點圖影像盡可能符合圖像的原始設計。如果應用程式需要未修改的字元外框,它可以針對大小等於字型 em 單位的字型中的字元要求字元外框。 字型 em 單位的值會儲存在 OUTLINETEXTMETRIC 結構的 otmEMSquare 成員中。

當指定GGO_BITMAP時,GetGlyphOutline 所傳回的字元點陣圖是 DWORD 對齊、數據列導向、單色位圖。 指定GGO_GRAY2_BITMAP時,傳回的位圖是 DWORD 對齊、數據列導向的位元組陣列,其值範圍從 0 到 4。 指定GGO_GRAY4_BITMAP時,傳回的位圖是 DWORD 對齊、數據列導向的位元組陣列,其值範圍從 0 到 16。 指定GGO_GRAY8_BITMAP時,傳回的位圖是 DWORD 對齊、數據列導向的位元組陣列,其值範圍從 0 到 64。

指定GGO_NATIVE時,GetGlyphOutline 所傳回的原生緩衝區是字元外框。 圖像外框會以一或多個輪廓的數列傳迴,這些輪廓是由 TTPOLYGONHEADER 結構所定義,後面接著一或多個曲線。 輪廓中的每個曲線都是由TTPOLYCURVE 結構 定義,後面接著一些 POINTFX 數據點。 POINTFX 點是絕對位置,而不是相對移動。 輪廓的起點是由 pfxStartTTPOLYGONHEADER 結構的成員所指定。 每個曲線的起點是上一個曲線的最後一個點或輪廓的起點。 曲線中的數據點計數會儲存在 TTPOLYCURVE 結構的 cpfx 成員中。 緩衝區中每個輪廓的大小,以位元組為單位,會儲存在 TTPOLYGONHEADER 結構的 cb 成員中。 其他曲線定義會封裝在上述曲線之後的緩衝區中,而其他輪廓則封裝在先前輪廓之後的緩衝區中。 緩衝區包含符合 GetGlyphOutline 所傳回之緩衝區內的輪廓數目。

GLYPHMETRICS 結構會指定字元儲存格的寬度,以及字元儲存格中字元的位置。 字元儲存格的原點位於字型基準的儲存格左邊。 圖像原點的位置相對於字元儲存格原點。 字元數據格、基準和其他字型全域度量的高度是由 OUTLINETEXTMETRIC 結構所指定。

應用程式可以在 lpMatrix 參數中指定 2-by-2 轉換矩陣,以點陣圖或原生格式擷取的字元。 例如,您可以使用矩陣乘法,透過剪下、旋轉、縮放或三者的任何組合來修改圖像。

字元外框的其他資訊位於 TrueType 和 OpenType 技術規格中。

注意

wingdi.h 標頭會根據 UNICODE 預處理器常數的定義,將 GetGlyphOutline 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的 慣例。

要求

要求 價值
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
支援的最低伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平臺 窗戶
標頭 wingdi.h (包括 Windows.h)
連結庫 Gdi32.lib
DLL Gdi32.dll

另請參閱

ExtTextOut

FORM_INFO_1

字型和文字函式

字型和文字概觀

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

POINT

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER