回 帖 发 新 帖 刷新版面

主题:字符串的宽度

还是关于API的,我想查看一下这行字符占有多少像素的宽度,我该怎么做?

我是这样写的,对吗?

[code=c]
...
TEXTMETRIC tm;
TextOut(...)
GetTextMetrics(hdc,&tm);
iWidth = tm.tmAveCharWidth * strlen(string);
...
[/code]

这样写对不,如果不对,我该怎么写呢?

回复列表 (共4个回复)

沙发

多看看MSDN

板凳

这样写没什么不对,不过,除了等宽字体外,Windows的字体宽度不是一样的,i和w就差别明显,tmAveCharWidth是小写字母的平均宽度,要取得大写字母的平均宽度,可以用:

int  cxCaps;

cxCaps = (tm.tmPitchAndFamily & 1 ? 3 : 2) * cxChar / 2 ;

3 楼

如果是想得到一行字符串的长度,不必知道平均宽度,用下面这个函数就可以了:
GetTextExtent,得到一个SIZE结构,sz.cx就是字符串的宽度了

4 楼

这好像是MFC里面的方法,挺好的···我还在学API,呵呵

我来回复

您尚未登录,请登录后再回复。点此登录或注册