首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SFML中居中按钮顶部的文本

在SFML中居中按钮顶部的文本
EN

Stack Overflow用户
提问于 2021-05-14 00:53:50
回答 2查看 72关注 0票数 0

我一直在尝试找到一个居中文本的公式,但我不能让它在所有长度的文本上工作,所以我有点卡住了,找不到一种方法来正确地将所有内容居中。这是我到目前为止所知道的:

代码语言:javascript
运行
复制
void Button::set_pos(sf::Vector2f pos) {
    button.setPosition(pos);

    float pos_x = (pos.x + button.getLocalBounds().width/3.0f) -
                  (text.getGlobalBounds().width/2);
    float pos_y = (pos.y + button.getLocalBounds().height/3.0f) -
                  (text.getGlobalBounds().height/2);
    text.setPosition(pos_x, pos_y);
}

但是,正如您所看到的,这并不适用于所有长度的文本

我怎样才能让它正确地居中呢?

EN

回答 2

Stack Overflow用户

发布于 2021-05-17 00:57:24

sfml中的文本从左下角开始,而不是左上角。我使用text.getLocalBounds()而不是text.getGlobalBounds()。这对我很有效。也有同样的问题。

另外,要确保文本不为空。ie在任何转换之前使用text.setString()

https://en.sfml-dev.org/forums/index.php?topic=9834.0

票数 0
EN

Stack Overflow用户

发布于 2021-05-26 23:06:53

使用带有按钮的.getGlobalBounds()而不是.getLocalBounds()。这应该行得通。

代码语言:javascript
运行
复制
void Button::set_pos(sf::Vector2f pos) {
    button.setPosition(pos);

    float pos_x = (pos.x + button.getGlobalBounds().width/3.0f) -
                  (text.getGlobalBounds().width/2);
    float pos_y = (pos.y + button.getGlobalBounds().height/3.0f) -
                  (text.getGlobalBounds().height/2);
    text.setPosition(pos_x, pos_y);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67523148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档