gpt4 book ai didi

c++ - 用wxWidgets计算字符串的显示宽度

转载 作者:搜寻专家 更新时间:2023-10-31 01:00:46 25 4
gpt4 key购买 nike

我正在尝试使用不同长度的不同字体在屏幕上绘制一个字符串。

wxScreenDC dc;
dc.SetFont(f.font);
f.height=dc.GetCharHeight();
f.width=dc.GetCharWidth();

这是我正在使用的代码,高度总是正确的并且正确地绘制在屏幕上。然而,宽度是某些字体在所有字体大小(例如 Fixedsys、Courier New)中都正确绘制的,但在某些字体中绘制不正确(计算小于实际显示宽度)(例如 Arial)

我检查了文档并看到了

wxCoord wxDC::GetCharWidth () const

Gets the average character width of the currently set font.

“获取平均字符宽度..”

我不能得到字体字符的实际宽度吗?

如果不是,如何正确计算字符串的显示宽度?

谢谢。

最佳答案

不是获取字体字符的宽度,而是使用 DC 使用 wxDC::GetTextExtent 测量给定单行字符串的宽度和高度

wxScreenDC dc;
dc.SetFont(f.font);
wxString tempString('M', length);
wxCoord width, height;
dc.GetTextExtent(tempString, &width, &height);


评论后更新:

通过按您知道的字符串长度重复字母“M”,您几乎可以得到应满足的最宽字符串。您几乎没有选择,因为对于像 Arial 这样的可变宽度字体,不可能获得一个单一的值——每个字符的宽度都不同,因此要应对最坏的情况。

关于c++ - 用wxWidgets计算字符串的显示宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30327748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com