任何人都可以帮助我。我想计算粗体字符串的宽度。我已经使用此代码计算,但它提供更多像素(额外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
答案 0 :(得分:0)
尝试致电:
CSize txtSize = dc.GetTextExtent(txt);
之后
pOldF = dc.SelectObject(& newFont);
希望它有所帮助,
维尼