GetGluphOutline関数による文字ビットマップの取得
// 例:MSゴシックの「あ」を取得します。
GLYPHMETRICS GM;
CONST MAT2 Mat = {{0,1},{0,0},{0,0},{0,1}};
// フォント情報
HFONT hFont = CreateFont(
24,
0,
0,
0,
0,
FALSE,
FALSE,
FALSE,
SHIFTJIS_CHARSET,
OUT_TT_ONLY_PRECIS,
CLIP_DEFAULT_PRECIS,
PROOF_QUALITY,
FIXED_PITCH | FF_MODERN,
"MS ゴシック"
);
// デバイスコンテキスト取得
// フォントを持たせないとGetGlyphOutline関数はエラーとなる
HDC hdc = GetDC(NULL);
HFONT oldFont = (HFONT)SelectObject(hdc, hFont);
// 文字コード取得
// 2バイト文字のコードは[文字コード]*256 + [先導コード]です
char *c = "あ";
UINT code = 0;
if(IsDBCSLeadByte(*c))
code = (BYTE)c[0]<<8 | (BYTE)c[1];
else
code = c[0];
// ビットマップ取得
DWORD size = GetGlyphOutline(hdc, code, GGO_GRAY4_BITMAP, &GM, 0, NULL, &Mat);
BYTE *ptr = new BYTE[size];
GetGlyphOutline(hdc, code, GGO_GRAY4_BITMAP, &GM, size, ptr, &Mat);
// オブジェクトの開放
SelectObject(hdc, oldFont);
DeleteObject(hFont);
ReleaseDC(NULL, hdc);
// 後片付け
delete[] ptr;