我試圖在SFML中居中某些文本。它沒有真正的工作,但你可以看到下面的圖片。 SFML繪圖居中文本
也許我的數學有問題嗎?
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));
'position.x'是邊界框的中心位置還是左邊位置? –
不知道你是否會遇到這種情況,但我注意到某些字體,可能是字體大小不正確的字體,與SFML的邊界函數(它們最終會出現多餘的填充,可以這麼說)無法很好地配合。目前硬編碼調整似乎是解決這個問題的唯一方法。 SFML 2.2的更新日誌包含每個'sf :: Font'的'Info'結構,稍後可能會有所幫助,但目前僅詳細介紹了該字體的族。 – Conduit