如何居中对齐文本水平?

时间:2020-11-02 21:41:22

标签: imgui

我正在ImGui中创建文本。它会自动右对齐,如何使一个文本居中对齐?

ImGui::Text("Example Text");

我不相信有功能可以做到这一点。我知道您可以为一个框或小部件完成此操作,但是我将如何为一个简单的文本添加文本?​​

2 个答案:

答案 0 :(得分:2)

这个 comment on a similar GitHub issue 有帮助,不过我自己还没有尝试过:

void TextCenter(std::string text) {
    float font_size = ImGui::GetFontSize() * text.size() / 2;
    ImGui::SameLine(
        ImGui::GetWindowSize().x / 2 -
        font_size + (font_size / 2)
    );

    ImGui::Text(text.c_str());
}

答案 1 :(得分:0)

void TextCentered(std::string text) {
    auto windowWidth = ImGui::GetWindowSize().x;
    auto textWidth   = ImGui::CalcTextSize(text.c_str()).x;

    ImGui::SetCursorPosX((windowWidth - textWidth) * 0.5f);
    ImGui::Text(text.c_str());
}
相关问题