Getting dimensions of text in SFML

Sir picture Sir · Nov 6, 2012 · Viewed 11.7k times · Source

I was wondering how i get the dimensions of my text in SFML?

I tried to do it like this:

 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 );

Does any one know ?

Thanks :)

Answer

kevintodisco picture kevintodisco · Nov 6, 2012

Looking at the documentation it seems like the function getLocalBounds could be of use to you. The line would be:

float width = text.getLocalBounds().width;

I'm not sure if the sf::Text object would add any padding on the ends of the bounding rectangle.

Alternatively, you could make use of findCharacterPos with something like:

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

where numChars is the number of characters in the string of your text object. However, since findCharacterPos will return global coordinates, it's probably more convenient to use getLocalBounds, this way you don't have to worry about whether your text object has any transformations applied to it.