我使用GetTextExtentPoint32
来计算具有特定HFONT
的字符串的宽度和高度。我的代码如下:
SIZE size;
HDC hdc = GetDC(handle);
SelectObject(hdc, hFont);
GetTextExtentPoint32(hdc, boost::nowide::widen(text).c_str(), static_cast<int>(boost::nowide::widen(text).length()), &size);
ReleaseDC(handle, hdc);
//using size.cx, size.cy as size
除非字符串包含水平制表符(字符文字&#34; \ t&#34;),否则大部分时间都可以正常工作。虽然GetTextExtentPoint32的文档指出:
GetTextExtentPoint32并不考虑&#34; \ n&#34; (新行)或&#34; \ r \ n&#34; (回车和换行)字符计算高度时 文本字符串。
没有任何关于&#34; \ t&#34; (水平标签),所以我想知道这是GetTextExtentPoint32
的预期行为还是我错过了什么?
是否有另一种方法来获取具有特定HFONT
的字符串的文本范围(不为Graphics.MeasureString
引入Gdiplus的依赖关系)?