10

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

Sir
  • 8,135
  • 17
  • 83
  • 146

2 Answers2

20

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.

kevintodisco
  • 5,061
  • 1
  • 22
  • 28
0

You can use getGlobalBounds() to get the size/coordinates after a transformation (rotation, scale, move...). Otherwise it's getLocalBounds().

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

Meo Elknot
  • 11
  • 1