Выровнять текст по центру прямоугольника - PullRequest
0 голосов
/ 11 апреля 2019

В настоящее время я пытаюсь написать класс кнопок в SFML / C ++, однако у меня возникают проблемы с выравниванием текста по центру кнопки.

Я использовал стандартную формулу выравнивания (кнопка x position / 2) - (ширина текста / 2) и (button y position / 2) - (высота текста / 2)

void setPosition(sf::Vector2f point) {
        button.setPosition(point);
        float xPos = (point.x / 2) - (text.getLocalBounds().width / 2);
        float yPos = (point.y / 2) - (text.getLocalBounds().height / 2);
        text.setPosition(xPos, yPos);
    }

Результатом этого кода является то, что текст смещается вверх и влево и определенно не в центре. Я уверен, что это как-то связано с тем, как SFML устанавливает свои координаты почти обратно, но я не уверен. Любая помощь приветствуется!

1 Ответ

0 голосов
/ 12 апреля 2019

Мне показалось, что эта формула сработала:

void setPosition(sf::Vector2f point) {
        button.setPosition(point);
        float xPos = (point.x + btnWidth / 2) - (text.getLocalBounds().width / 2);
        float yPos = (point.y + btnHeight / 2) - (text.getLocalBounds().height / 2);
        text.setPosition(xPos, yPos);
    }
...