在SFML中获取文本的维度

时间:2012-11-06 05:29:01

标签: 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 );

有人知道吗?

谢谢:)

2 个答案:

答案 0 :(得分:15)

查看文档似乎是函数 getLocalBounds可能对您有用。该行将是:

float width = text.getLocalBounds().width;

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

或者,您可以使用findCharacterPos之类的内容:

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

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

答案 1 :(得分:0)

您可以使用getGlobalBounds()来获取变换后的大小/坐标(旋转,缩放,移动...)。 否则它是getLocalBounds()。

Doc:http://www.sfml-dev.org/documentation/2.3.1/classsf_1_1Text.php