BOOL GetTextMetrics(HDC hdc,LPTEXTMETRIC lptm);可以获得字体信息,并填入TEXTMETRIC结构: typedef struct tagTEXTMETRIC { LONG tmHeight; LONG tmAscent; LONG tmDescent; LONG tmInternalLeading; LONG tmExternalLeading; LONG tmAveCharWidth; LONG tmMaxCharWidth; ... ... ... ... ... ... } TEXTMETRIC; 这个结构中,重要的几个变量其意义见下图: tmInternalLeading 用于显示重音符号;基线上的高度为tmAscent;基线下的高度为tmDescent;tmHeight = tmAscent + tmDescent 被称为单元高度(cell height);tmHeight - tmInternalLeading 被称为字符高度(character height)。 tmExternalLeading是行间距,见下图: CreateFont的第1个参数,如果为正,就是设置单元高度;如果为负,就是设置字符高度。 测试代码(MFC)如下: CClientDC dc(this); LOGFONT logFont; TEXTMETRIC tm; memset(&logFont,0,sizeof(logFont)); logFont.lfCharSet = DEFAULT_CHARSET; logFont.lfHeight = -20; //修改该数值,查看 tm 变量 strcpy(logFont.lfFaceName,"Courier New"); dc.SelectObject(::CreateFontIndirect(&logFont)); dc.GetTextMetrics(&tm); DeleteObject(dc.SelectStockObject(SYSTEM_FIXED_FONT)->m_hObject);


被折叠的 条评论
为什么被折叠?



