共用方式為


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 字元索引,而不是字元碼。 如需字元索引的其他備註,請參閱 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 點是絕對位置,而不是相對移動。 分佈的起點是由TTPOLYGONHEADER結構的 pfxStart成員所指定。 每個曲線的起點是上一個曲線的最後一個點或曲線的起點。 曲線中的數據點計數會儲存在TTPOLYCURVE結構的 cpfx 成員中。 緩衝區中每個分佈的大小,以位元組為單位,會儲存在TTPOLYGONHEADER結構的 cb 成員中。 其他曲線定義會封裝在上述曲線之後的緩衝區中,而其他曲線則會封裝在先前的分佈之後的緩衝區中。 緩衝區包含符合 GetGlyphOutline 所傳回之緩衝區內的分佈數目。

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

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

圖像大綱的其他信息位於 TrueType 和 OpenType 技術規格中。

注意

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

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 wingdi.h (包含 Windows.h)
程式庫 Gdi32.lib
Dll Gdi32.dll

另請參閱

ExtTextOut

FORM_INFO_1

字型和文字函式

字型和文字概觀

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER