我正在尝试验证示例中CFont
高度和大小之间的依赖关系:
int main(int argc, char* argv[])
{
int myVariableFontHeight = 90;
CFont * font = new CFont();
LOGFONT lf;
memset(&lf,0,sizeof(LOGFONT));
lf.lfHeight = myVariableFontHeight;
lf.lfWeight =FW_BOLD;
lf.lfCharSet = 1;
_tcscpy_s(lf.lfFaceName , "Arial Unicode MS");
font->CreatePointFontIndirect(&lf);
font->GetLogFont(&lf);
int fontHeight = lf.lfHeight;
HWND console = GetConsoleWindow();
HDC dc = GetDC(console);
int nFontSize = -::MulDiv( lf.lfHeight, 72, ::GetDeviceCaps( dc, LOGPIXELSY ) );
delete font;
return 0;
}
结果总是nFontSize = myVariableFontHeight/10
。 10这个因素是什么?它来自哪里?我可以从给定的大小计算字体高度吗?
由于
答案 0 :(得分:1)
它在MFC源代码中。它在文档中。 CFont :: CreatePointFontIndirect在线文档的第一行说明:
此函数与CreateFontIndirect相同,除了 LOGFONT的lfHeight成员以十分之一的角度进行解释 而不是设备单位。
因此,如果要创建10磅字体,请将lf.lfHeight设置为100.