获取TTF字体的点阵信息还是使用GetGlyphOutline
看代码
CClientDC dc(this);
HDC hDC = dc.GetSafeHdc();
//创建字体
CFont font;
VERIFY(font.CreateFont(32, 0, 0, 0, FW_NORMAL, FALSE, FALSE, 0, ANSI_CHARSET,
OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_SWISS, "宋体"));
CFont *pOldFont = dc.SelectObject(&font);
// 定义并初始化变换矩阵
MAT2 mat2;
memset(&mat2, 0, sizeof(mat2));
mat2.eM11.value = 1;
mat2.eM22.value = -1; // 我这里写-1, 字体会倒置, 结合BMP的格式
GLYPHMETRICS metrics; // 保存字符相关信息
DWORD dwDataSize = 0; // 初始化字符数据缓冲区大小
//……
// 通过函数GetGlyphOutline()确定存储字符结构的空间
wchar_t nChar = L'我';
::TextOut(dc.m_hDC, 0, 0, "我", 2);
dwDataSize = ::GetGlyphOutlineW(dc.m_hDC, (UINT)nChar, GGO_BITMAP, &metrics, 0, NULL, &mat2);
if ((dwDataSize != 0) && (dwDataSize != GDI_ERROR))
{
CMYBitmap myBitmap;