【问题标题】:How to change text alignment SFML/C++如何更改文本对齐方式 SFML/C++
【发布时间】:2016-05-28 16:20:00
【问题描述】:

我想在 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);

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

【问题讨论】:

    标签: c++ text alignment sfml text-alignment


    【解决方案1】:

    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(尽管如果字符串相同,它可能会被优化为不重新创建文本,这不适用于每帧创建一个新对象)。

    【讨论】:

      猜你喜欢
      • 2011-06-15
      • 2011-04-06
      • 1970-01-01
      • 2018-09-03
      • 2016-10-23
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 2023-03-24
      相关资源
      最近更新 更多