社区
图形处理/算法
帖子详情
某些字体的字母宽度不一致,如何获得一个字符串的实际宽度?
xiangshenyang
2005-10-24 04:45:10
现在发现有些字体如"Times New Roman"的字符宽度不一致,字符‘a’比字符‘f’宽得多。郁闷,不知道怎么来获指定字符串的实际宽度。
...全文
866
7
打赏
收藏
某些字体的字母宽度不一致,如何获得一个字符串的实际宽度?
现在发现有些字体如"Times New Roman"的字符宽度不一致,字符‘a’比字符‘f’宽得多。郁闷,不知道怎么来获指定字符串的实际宽度。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ddmor
2005-10-24
打赏
举报
回复
TRUE Type类型的字体宽度是一致的比如宋体,可以用::GetCharABCWidths()来获得,非TRUE TYPE类型的字体需要用::GetCharWidth32来获得,比如:
ABC pBuf[26];
INT pBuf2[26];
pDC->GetCharABCWidths('a','z',pBuf);
pDC->GetCharWidth('a','z',pBuf2);
这样就可以获得字体具体的宽度了。
不过可以字符串的长度可以用goodboyws所说GetTextExtentPoint32来获得。
CDC中为GetTextExtent(),该函数功能强大,还可以取中文的长度。
如:
ABC pBuf[26];
INT pBuf2[26];
CSize size;
pDC->GetCharABCWidths('a','z',pBuf);
pDC->GetCharWidth('a','z',pBuf2);
size=pDC->GetTextExtent("中文");
在GDI+里边好像没有封装此类函数,所以你只好借助CDC来完成宽度估计啦。
呵呵,本人以前写过一个文本编辑器,当时遇到这个问题也很头疼。
thisisll
2005-10-24
打赏
举报
回复
原来有这种函数啊
害我写了一个
goodboyws
2005-10-24
打赏
举报
回复
用API
BOOL GetTextExtentPoint32(
HDC hdc, // handle to DC
LPCTSTR lpString, // text string
int cbString, // characters in string
LPSIZE lpSize // string size
);
xiangshenyang
2005-10-24
打赏
举报
回复
我用的是GDI+,该用什么函数
goodboyws
2005-10-24
打赏
举报
回复
错了,是CDC::GetTextExtent
goodboyws
2005-10-24
打赏
举报
回复
CDC::GetTextExtend
寻开心
2005-10-24
打赏
举报
回复
GetCharWidth32
计算
字符串
的
宽度
(width)
根据设备类型(如:Widows,windowmobile...)、
字体
、
字体
大小以及指定的文本来计算文本的
宽度
。目前文本高度还没提供。
处理
字符串
中英文
宽度
不
一致
问题小工具
java获取指定
宽度
字符串
的小工具实现功能通过给定下标计算出指定
宽度
的下标位置计算
字符串
宽度
计算
字符串
宽度
(按英文
宽度
)计算
字符串
宽度
(按中文
宽度
)填充空白字符到
字符串
头部,以达到期望的
宽度
填充空白字符到
字符串
末尾,以达到期望的
宽度
实现功能 通过给定下标计算出指定
宽度
的下标位置 计算
字符串
宽度
计算
字符串
宽度
(按英文
宽度
) 计算
字符串
宽度
(按中文
宽度
) 填充空白字符到
字符串
头部,以达到期望的
宽度
...
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、分割、格式化、编码、转换等
字符串
操作,带同学们系统学习 Python
字符串
方法。
js输入框字符
宽度
判断-已知
字符串
宽度
/未知
字符串
宽度
2020年12月23日 火辣辣%1 $ S 一、需求说明 一串字符长度很好判断,this.text.length就拿到了,但是对于
一个
固定
宽度
的文本框,要求不能超过
宽度
,那么就要计算这行文本的
宽度
。汉字是等宽字符,但是数字和英文则
宽度
不
一致
,这里的建议是,以数字为单位,比如1,那么一行最多输入20的汉子,长度则为20,
字母
则要按照最宽的字符w去计算,数字则以5为单位去计算。 二、解决方案 情形一:已知的
字符串
宽度
,根据要求截取固定
宽度
的
字符串
,比如我已经知道了一串
字符串
了,去截取固定的
宽度
方法一: Str
Python如何计算
字符串
的显示
宽度
使用 split() 函数将文本分成多行和多个单词,使用 wcswidth() 函数计算单词或列的显示
宽度
,使用列表和
字符串
拼接进行列的拼接和输出。需要注意的是,wcwidth 库仅支持 Python 2 和 Python 3 中的 Unicode
字符串
,如果要处理其他类型的
字符串
,需要先将其转换为 Unicode
字符串
。另外,由于不同的终端可能使用不同的字符编码和
字体
,因此计算出的显示
宽度
可能与
实际
显示效果略有差异。在计算
字符串
的显示
宽度
时,需要考虑到不同字符的显示
宽度
可能不同。
图形处理/算法
19,468
社区成员
50,698
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章