如何确定一串字符的宽度? 当创建一种字体m_font后,然后dc.SelectObject(&m_font);选进DC后,在这个dc中可以输出一个字符串,怎么确定这串字符的宽度呢?选用不同的字体,字符串的总宽度是不同的,字符串中含有英文字符还有数字,这些字符的宽度也各不相同,怎么确定这串字符的宽度呢?对了,是象素! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1.得到一个字符的宽度TEXTMETRIC tm ;hdc = GetDC (hwnd) ;GetTextMetrics (hdc, &tm) ;cxChar = tm.tmAveCharWidth ;2.计算字符串中有多少个汉字(chs), 大写(upper), 小写(lower), 数字(number).3.则宽度为 cxChar * (2 * chs + 3 * upper / 2 + lower + number) 没有楼上说的那么复杂!!!!得到一个字符的宽度当然是用GetTextMetrics 获得字符串的宽度直接用GetTextExtent();但现在的问题是:创建一个字体对话框,然后从中选择一中字体和大小之后,将这种字体选进dc中,由于'w'和'i'以及'2'宽度可能不同,所有我用CSize size = GetTextExtent(&str)获得字符串的总宽度,但是问题是我让str = "32oC";然后我用AfxMessageBox("%d",size.cx);它输出的大小和我在屏幕上看到的大小有很大的出入。比如它输出16,但我看到的实际大小远远超过16个象素.(GetTextExtent返回的逻辑单位,但默认映射模式是MM-TEXT,所以逻辑单位应该等于象素啊)?请问可能是什么原因啊? 用drawtext不就行吗?有个dt_calcrect 有关创建文件夹的问题 CDhtmldialog 点击mailto超链接后关闭outlook,然后点击界面上的其他按钮没有响应 VC++/MFC 编写的具有水波效果的屏幕保护程序 郁闷,主对话框保存子对话框指针,为什么指针无法delete? 一个原理性的问题,TCP方式下两次发送的数据是如何被分隔开的? 请指点迷津 请问用什么工具可以把EXE文件中的资源取出来??? 初学者提问:"- >"的作用,在操作指针中的作用? 急,高手帮忙 sql数据库求助 怎么用VC进行多线程下载文件? 网络编程不知道为什么总是接收一半数据
TEXTMETRIC tm ;
hdc = GetDC (hwnd) ;
GetTextMetrics (hdc, &tm) ;
cxChar = tm.tmAveCharWidth ;2.计算字符串中有多少个汉字(chs), 大写(upper), 小写(lower), 数字(number).
3.则宽度为 cxChar * (2 * chs + 3 * upper / 2 + lower + number)
得到一个字符的宽度当然是用GetTextMetrics
获得字符串的宽度直接用GetTextExtent();
但现在的问题是:
创建一个字体对话框,然后从中选择一中字体和大小之后,将这种字体选进dc中,由于'w'和'i'以及'2'宽度可能不同,所有我用CSize size = GetTextExtent(&str)获得字符串的总宽度,但是问题是我让str = "32oC";
然后我用AfxMessageBox("%d",size.cx);它输出的大小和我在屏幕上看到的大小有很大的出入。比如它输出16,但我看到的实际大小远远超过16个象素.(GetTextExtent返回的逻辑单位,但默认映射模式是MM-TEXT,所以逻辑单位应该等于象素啊)?
请问可能是什么原因啊?
有个dt_calcrect