c++ - 如何更改文本对齐方式 SFML/C++

标签 c++ text alignment sfml text-alignment

我想在 SFML 中将文本对齐方式从左对齐更改为右对齐。我怎样才能做到这一点?

    // Gil text
sf::Text textGIL("Gil ", font3, 18);
textGIL.setColor(sf::Color::White);

textGIL.setString("Gil : " + to_string(Player1.gil)); //convert player1's gil to a string

window.draw(textGIL);
        textGIL.setPosition(200, 310);

为清楚起见,我希望文本从右侧开始向左移动,因为字符串中添加了更多字符,而不是从左侧开始向右移动。

最佳答案

sf::Text 不会自动为您处理。但是,它确实提供了执行此操作的工具。设置要显示的字符串后,您可以使用 getLocalBounds() 获取边界矩形。然后您可以使用此矩形中的 width 成员,并从您想要的右对齐点中减去它以获得左侧位置,然后您可以将其作为 x 坐标传递给 setPosition.

textGIL.setString("Gil : " + to_string(Player1.gil));
FloatRect bounds = textGIL.getLocalBounds();
textGIL.setPosition(200 - bounds.width, 310);

顺便说一句,sf::Text 对象的制作成本相当高。我不建议每帧都动态构建它,而是存储一个持久的,并且仅在字符串实际更改时才调用 setString (尽管它可能被优化为不重新创建文本,如果字符串是相同的,这不适用于每帧创建一个新对象)。

关于c++ - 如何更改文本对齐方式 SFML/C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35448626/

相关文章:

c++ - STD 算法如何处理 lambda 指针?

c++ - 代码从 C/C++ 转换为 Delphi

c++ - 自动端口转发(UPnP?)C++

c++ - 当我尝试在函数中使用模板别名时失败

python - 正则表达式从输入中获取字母

swift - 如何在字符串中插入双引号?

java - 我可以计算计算机中的图像被查看了多少次并将计数数存储在java文件或cpp文件中?

android - 如何在 Android 中创建 "floating TextViews"?

ios - 均匀间隔多个 View 使用尺寸等级

CSS3 - 在 <article> 中并排对齐 <p> 和 <figure>