用C ++计算字体高度的大小?

时间:2017-02-14 11:34:15

标签: c++ fonts mfc

我正在尝试验证示例中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这个因素是什么?它来自哪里?我可以从给定的大小计算字体高度吗?

由于

1 个答案:

答案 0 :(得分:1)

它在MFC源代码中。它在文档中。 CFont :: CreatePointFontIndirect在线文档的第一行说明:

  

此函数与CreateFontIndirect相同,除了   LOGFONT的lfHeight成员以十分之一的角度进行解释   而不是设备单位。

因此,如果要创建10磅字体,请将lf.lfHeight设置为100.