计算粗体字符串的宽度

时间:2014-05-29 22:42:29

标签: mfc

任何人都可以帮助我。我想计算粗体字符串的宽度。我已经使用此代码计算,但它提供更多像素(额外7像素)。

如何减少这些像素。

示例:我正在使用Bold String' Intermediatery Bank:'。当我执行此代码时,我得到147像素..但它提供更多(7像素额外)。

int CPrintableInvoice::GetFormattedStringWidth(const CString& txt)
{
      if (txt.IsEmpty())
      return 0;

      CFont *pOldF, *pF = GetFont();
      CClientDC dc(this);
      LOGFONT lf;
      memset(&lf, 0, sizeof(LOGFONT));
      lf.lfWeight =FW_BOLD ;
      CFont newFont;
      VERIFY(newFont.CreatePointFontIndirect(&lf, &dc));
      pOldF = dc.SelectObject(&newFont);
      CRect r;
      dc.DrawText(txt, &r, DT_SINGLELINE|DT_CALCRECT);
      int wid = r.Width();
      dc.SelectObject(pOldF);
      return wid;
} 

请帮助我,我是MFC的新手。

谢谢, Hareesh

1 个答案:

答案 0 :(得分:0)

尝试致电:

CSize txtSize = dc.GetTextExtent(txt);

之后

pOldF = dc.SelectObject(& newFont);

希望它有所帮助,

维尼