You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Win32API如何获取单个字符的像素宽度?

获取单个字符的像素宽度

方法1:直接使用GetTextExtentPoint

既然你已经熟悉GetTextExtentPoint获取字符串宽度,那获取单个字符的逻辑很简单——把目标字符包装成长度为1的字符串传入函数即可。示例代码(Windows API,C++):

HDC hdc = GetDC(hWnd); // 获取目标窗口的设备上下文
WCHAR targetChar = L'X'; // 你要测量的单个字符
SIZE charSize;
// 传入单个字符,长度参数设为1
GetTextExtentPointW(hdc, &targetChar, 1, &charSize);
int charPixelWidth = charSize.cx; // 得到单个字符的像素宽度
ReleaseDC(hWnd, hdc); // 释放设备上下文

方法2:使用专门的GetCharWidth32函数

Windows API提供了更直接的GetCharWidth32函数,专门用于获取单个或连续字符的宽度,用法更简洁:

HDC hdc = GetDC(hWnd);
UINT charWidth;
// 第三个参数和第二个参数相同,表示只获取单个字符的宽度
GetCharWidth32W(hdc, L'中', L'中', &charWidth);
ReleaseDC(hWnd, hdc);

关键注意事项

  • 字符的像素宽度完全依赖当前设备上下文(HDC)的字体设置,包括字体类型、字号、粗体/斜体等样式,测量前要确保HDC使用的是实际显示时的字体。
  • 对于中文、日文等宽字符,上述两种方法同样适用,只需传入对应的单个宽字符即可。

内容的提问来源于stack exchange,提问作者moonkanghyuck

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 20:35:23