如果我在 MFC 中有粗体文本,如何计算宽度
Posted
技术标签:
【中文标题】如果我在 MFC 中有粗体文本,如何计算宽度【英文标题】:How to calculate the width if i am having bold text in 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
即可。
【参考方案1】:
尝试改用GetTextExtent()。如下:
CFont *pOldF, *pF = GetFont();
CClientDC dc(this);
pOldF = dc.SelectObject(pF);
CSize size = dc.GetTextExtent();
return size.cx;
【讨论】:
以上是关于如果我在 MFC 中有粗体文本,如何计算宽度的主要内容,如果未能解决你的问题,请参考以下文章