繁体   English   中英

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

[英]How to change text alignment SFML/C++

我想在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()获取边界矩形。 然后,您可以使用此rect中的width成员,并从所需的右对齐点减去该成员以获得左位置,然后将其作为x坐标传递给setPosition

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM