如何得到一串字符串的实际宽度,和高度
我要在界面上不同区域输出字符串,并对它们实现点击删除,编辑,
拖动等功能,
所以就需要知道它们的具体尺寸设定区域并输出.
这个功能在VB中很好实现,高度和设定的基本一样,宽度可以用
Printer.TextWidth(STR)得到.
在VC中好象很难,高度和设定的值也不一样,负数.
如何实现?
问题点数:40、回复次数:9Top
1 楼laiyiling(陌生人[MVP])回复于 2006-02-10 09:28:21 得分 15
GetTextExtentPoint32
The GetTextExtentPoint32 function computes the width and height of the specified string of text.
Top
2 楼teli_eurydice(哭泣的仙人掌。。。。)回复于 2006-02-10 09:39:24 得分 5
drawText 后面有个参数,自己查查Top
3 楼clife(笨狗API.NET)回复于 2006-02-10 09:48:31 得分 5
GetTextMetrics(...);
Windows程序设计一书中有详细说明Top
4 楼lexyohi(lexyohi)回复于 2006-02-10 10:07:10 得分 0
GetTextExtentPoint32好象可以,但不会用
能不能稍微详细一些,有例子吗?
GetTextMetrics使用过,是字符,不是字符串
drawText ,能不能详细一些?Top
5 楼lexyohi(lexyohi)回复于 2006-02-10 10:28:30 得分 0
OK
用GetTextExtentPoint32的方法大概成功了
不过高度稍微有些疑问,总是比实际设定要大1/4
左右.
比如设高=10时,SIZE.CY=13
设高=20时,SIZE.CY=27
这是怎么回事?
解答完后给分Top
6 楼lzf8977(wind)回复于 2006-02-13 23:30:42 得分 5
用DrawText 里面加一个参数,可以取得这个文本画出来所需要的RECT ,
我的MSDN坏了,要不给你找,,这个是最方便的了.!!Top
7 楼striking(庸人自扰)回复于 2006-02-13 23:54:46 得分 5
CString str = "abcdefg ";
CSize sz = pDC->GetTextExtent(str);
sz 就包含 str的长度和高度
Top
8 楼striking(庸人自扰)回复于 2006-02-13 23:56:07 得分 0
CDC * pDC = GetDC();
CSize sz = pDC->GetTextExtent(str);
ReleaseDC(pDC);
Top
9 楼Mackz(在相互)回复于 2006-02-14 09:06:46 得分 5
GetTextExtentPoint32得到的单位是像素,字体的单位不是像素。你可以用矩形描绘字符串的边来看看。Top




