现在有个问题,我知道了 字体名,字体大小,粗体,我需要得到 字符串“A1B”的宽度,该怎么做呀,朋友们帮帮忙?因为 字体名Arial 字体大小36 粗体 的情况下“A1B”的宽度 和
字体名黑体 字体大小36 粗体 的情况下“A1B”的宽度 是不一样的吧。
请大家帮帮忙,怎么样得到 字符的宽度?
先给100分,解决了再给 100.
字体名黑体 字体大小36 粗体 的情况下“A1B”的宽度 是不一样的吧。
请大家帮帮忙,怎么样得到 字符的宽度?
先给100分,解决了再给 100.
解决方案 »
- 高手帮小弟看看CListCtrlEX这段代码错在哪里?
- 程序bind(sock,(sockaddr*)&serv,addlen),不知为何bind不成功?
- 急!!如何获取当前连接的显示器数目?
- 用BHO写了个IE插件,希望当访问某个页面的时候,把插件显示在该页面的某一固定位置,请问,这个该怎么做啊?
- ???????FormView里放有TabCtrl控件,如何在view里响应TabCtrl里某页中一按钮的单击事件???????
- 请问一个错误!
- 请教:当xml为UTF-8时为什么IXMLDOMDocument2会出错?
- 请问如何立即结束程序,在MainFrame 显示之前
- 一个菜单问题。
- ATL编出来的dll文件,都是内部包含了tlb的完整信息的吗?
- VC 局域网中如何利用已知服务器端口号获得服务器IP地址?
- 向邮件服务器发送hello命令为什么接收不到回应?
font->CreateFont(15,0,0,0,FW_NORMAL,FALSE,FALSE,0,ANSI_CHARSET,OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_SWISS,"Arial");
要想得到一个字符串的宽度及高度
CSize SizeTemp;
SizeTemp=pDC->GetTextExtent(Str);
SizeTemp.cx就是字符串的宽度
SizeTemp.cy就是字符串的高度
不过这都是像素值
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int c, // characters in string
LPSIZE lpSize // string size
);
CFont font;
font.CreatePointFontIndirect 创建字体,然后用 GetTextExtentPoint32 估计宽度、高度注意 lfWeight 是 700 表示粗体
CRect rcText(0,0,0,0);
pDC->DrawText(_T("ABC"), &rcText, DT_CALCRECT);
pDC->SelectObject( pFont );int cx = rcText.Width();
int cy = rcText.Height();
CSize XXXX::GetLineStringCount(CDC*pDC,UINT nLinelength,CString strOut)
{
TEXTMETRIC tm ;
UINT nTextCount=strOut.GetLength() ;
UINT nCount = 0 ;
UINT nCurCount = 0 ;
UINT nTextWidth = 0 ;
double nAveCharWidth = 0 ;
CSize nSzInfo ;
pDC->GetTextMetrics(&tm) ;
nCount = nLinelength/tm.tmAveCharWidth ;
nTextWidth = pDC->GetTextExtent(strOut).cx ;
if(nTextWidth<nLinelength)
{
nSzInfo.cx = nTextCount ;
nSzInfo.cy = 1 ;
return nSzInfo ;
}
else
{
nAveCharWidth = ((double)nTextWidth)/nTextCount ;
nCurCount = (int)((double)nLinelength/nAveCharWidth) ;
nSzInfo.cx = nCurCount<nCount?nCurCount:nCount ;
nSzInfo.cy = ((nTextWidth-nTextWidth%nLinelength)/nLinelength) + (((nTextWidth%nLinelength)>0)?1:0);
return nSzInfo ;
}
}