SFML绘图居中文本

时间:2015-01-06 19:47:29

标签: c++ sfml

我试图在SFML中居中一些文字。尽管如下图所示,它仍然可以正常工作。 enter image description here

我的数学可能有问题吗?

void TextRenderer::renderCentered(sf::RenderWindow& window, std::string string, sf::Vector2f     position, int size, sf::Color color) {
    sf::Text text;

    text.setFont(TextRenderer::kavoon);
    text.setString(string);

    float width = text.getLocalBounds().width;

    text.setPosition(position.x - width / 2, position.y);

    text.setCharacterSize(size);
    text.setColor(color);

    window.draw(text);
}

在渲染方法中:

TextRenderer::renderCentered(*window, pickuptext.str(), sf::Vector2f(player->sprite.getPosition().x, player->sprite.getPosition().y - 48), 28, sf::Color(255, 145, 61));
TextRenderer::renderCentered(*window, pickuptextdesc.str(), sf::Vector2f(player->sprite.getPosition().x, player->sprite.getPosition().y - 16), 18, sf::Color(255, 145, 61));

1 个答案:

答案 0 :(得分:2)

在边界框内水平居中文本的公式为:

text_start = bounding_box_width / 2 - text_width / 2;

看起来您可能没有提供边界框水平中心点。