c++ - 在 SFML 中获取文本的尺寸

标签 c++ sfml

我想知道如何在 SFML 中获取文本的尺寸?

我试着这样做:

 sf::Text text("Hello SFML", font, 50);

// using text.getRect()
// i also tried getScale() & getSize()
// neither are correct

 text.setPosition( window.getSize().y/2 - text.getRect().y,50 );

有人知道吗?

谢谢:)

最佳答案

看文档好像是这个函数 getLocalBounds可能对你有用。该行将是:

float width = text.getLocalBounds().width;

我不确定 sf::Text 对象是否会在边界矩形的两端添加任何填充。

或者,您可以使用 findCharacterPos像这样:

float width = text.findCharacterPos(numChars - 1).x - text.findCharacterPos(0).x;

其中 numChars 是您的 text 对象的字符串中的字符数。然而,由于 findCharacterPos 将返回全局坐标,使用 getLocalBounds 可能更方便,这样你就不必担心你的 text 对象应用了任何转换。

关于c++ - 在 SFML 中获取文本的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13244928/

相关文章:

c# - 当需要将数组复制回主机时如何避免同步?

c++ - 如何使用 is_invocable() 来创建用于重载 << 以打印对象的模板?

C++:使用 PostMessage/SendMessage 发送鼠标点击

c++ - 关于我游戏中继承的一个问题

c++ - '对象' : 'struct/class' type redefinition WITH header guards. 如何修复?

c++ - SFML C++ 绘制到 RenderWindow 纯虚函数运行时失败

c++ - 向其绘制时屏幕变黑 SFML C++

c++ - 将每个对象独立渲染到空间中,并在 3D 场景上渲染 2D 场景

c++ - 为什么 clang-tidy 建议在任何地方添加 [[nodiscard]] ?

c++ - SFML 文本未绘制在窗口上