CDC::GetGlyphOutline
更新 : 2007 年 11 月
現在のフォントのアウトライン文字についてのアウトライン曲線またはビットマップを取得します。
DWORD GetGlyphOutline(
UINT nChar,
UINT nFormat,
LPGLYPHMETRICS lpgm,
DWORD cbBuffer,
LPVOID lpBuffer,
const MAT2* lpmat2
) const;
パラメータ
nChar
情報が返される文字を指定します。nFormat
関数が情報を返すときの形式を指定します。次のいずれかの値、または 0 を指定できます。値
説明
GGO_BITMAP
グリフのビットマップを返します。関数が lpBuffer で指定されたバッファに返す値は、1 ピクセルが 1 ビットで表現され、各列はダブルワード境界に揃えられます。
GGO_NATIVE
ラスタライザのネイティブ フォーマットの曲線データの各点をデバイス単位を使って返します。この値が指定されたときは、lpmat2 で指定された変換は無視されます。
nFormat の値が 0 のときは、GLYPHMETRICS 構造体にデータを設定しますが、グリフのアウトライン データは返しません。
lpgm
文字セル内のグリフの位置を表す GLYPHMETRICS 構造体へのポインタ。cbBuffer
関数が返すアウトライン文字についての情報をコピーするバッファのサイズを指定します。この値が 0 で、パラメータ nFormat が GGO_BITMAP または GGO_NATIVE のいずれかのときは、関数は必要とするバッファのサイズを返します。lpBuffer
関数が返すアウトライン文字についての情報をコピーするためのバッファへのポインタ。nFormat に GGO_NATIVE が指定されているときは、情報は TTPOLYGONHEADER 構造体と TTPOLYCURVE 構造体の形式でコピーされます。この値が NULL で nFormat が GGO_BITMAP または GGO_NATIVE のいずれかのときは、関数は必要とするバッファのサイズを返します。lpmat2
文字の変換行列を持つ MAT2 構造体へのポインタ。このパラメータには、nFormat に GGO_NATIVE が指定されているときでも、NULL は指定できません。
戻り値
cbBuffer が 0 または lpBuffer が NULL の場合は、取得した情報が必要とするバッファのサイズをバイト数で返します。それ以外の場合、関数が正常終了したときには正の値を、エラーが発生したときには -1 を返します。
解説
アプリケーションは、lpmat2 で指定される構造体に 2 × 2 の変換行列を指定することで、ビットマップ形式で取得した文字を回転できます。
連続した輪郭としてグリフのアウトラインが返されます。それぞれの輪郭は、TTPOLYGONHEADER 構造体とそれに続く、その輪郭を描画するために必要な数の TTPOLYCURVE 構造体で定義されます。すべての点は、POINTFX 構造体で返され、相対的な移動量ではなく、絶対位置で表現されています。TTPOLYGONHEADER 構造体の pfxStart メンバで指定される始点は、輪郭のアウトラインが始まる点です。それに続く、TTPOLYCURVE 構造体は折れ線レコードまたはスプライン レコードです。折れ線レコードは、連続した点です。それぞれの点の間を直線で結ぶことにより、文字のアウトラインが描かれます。スプライン レコードは、TrueType で使われる 2 次曲線です (つまり、2 次 b スプライン)。
必要条件
ヘッダー : afxwin.h