【问题标题】:How to calculate the width if i am having bold text in MFC如果我在 MFC 中有粗体文本,如何计算宽度
【发布时间】:2014-05-28 06:11:17
【问题描述】:

这是计算普通文本宽度的示例代码(没有粗体)。 --现在我想计算粗体文本的宽度。 我有“中介银行:”作为粗体文本

任何人都可以帮助......请

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

  CFont *pOldF, *pF = GetFont();
  CClientDC dc(this);
  pOldF = dc.SelectObject(pF);
  CRect r;
  dc.DrawText(txt, &r, DT_SINGLELINE|DT_CALCRECT);
  int wid = r.Width();
  dc.SelectObject(pOldF);
  return wid;
}

提前致谢..

谢谢, 哈雷什。

【问题讨论】:

  • 要获得粗体文本的宽度,您需要创建具有粗体属性的字体,并在执行相同计算之前将其选择到设备上下文中。要创建粗体字体: 1. 调用pF->GetObject(...) 以返回LOGFONT 结构。 2.增加lfWeight会员。 3. 使用CFont::CreateFontIndirect(...) 创建新字体。 4. 将其选入CClientDC 即可。

标签: mfc


【解决方案1】:

尝试改用GetTextExtent()。如下:

CFont *pOldF, *pF = GetFont();
CClientDC dc(this);
pOldF = dc.SelectObject(pF);
CSize size = dc.GetTextExtent();
return size.cx;

【讨论】:

    猜你喜欢
    • 2016-03-18
    • 2011-11-25
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 2010-12-07
    • 2011-04-01
    • 1970-01-01
    • 2021-10-26
    相关资源
    最近更新 更多