Ровное центрирование элементов ImGui

Dmitriy Makarov

25.05.2021
Автор темы
Проверенный
2,505
1,134
Версия MoonLoader
.027.0-preview
Привет.
С геометрией всегда плохо было. Не знаете, как сделать РОВНОЕ центрирование элементов в ImGui? Не знаю, как правильно объяснить, постараюсь с помощью скриншотов.

Вот с таким кодом:
Lua:
-- 1
imgui.SetCursorPosX((imgui.GetWindowWidth() - 75) / 2)
imgui.Button("Button", imgui.ImVec2(100, 50))

-- 2
imgui.SetCursorPosX(imgui.GetWindowWidth() / 2)
imgui.InputText("##1", search)

-- 3
imgui.SetCursorPosX((imgui.GetWindowWidth() - 75) / 2)
imgui.InputText("##2", search)

-- 4
imgui.SetCursorPosX((imgui.GetWindowWidth() - 75) / 2)
imgui.SliderInt("##1", slider, 0, 3)
Я получаю такой такой результат:
Screenshot_4.png

Мне нужно, чтобы элементы были ровно по центру, а не начало элемента было по центру.
Кнопка приблизительно в центре, можно, конечно, немного поэкспериментировать с делением, но тогда другие элементы собьются.
С текстом можно такой трюк провернуть:
Lua:
imgui.SetCursorPosX((imgui.GetWindowWidth() - imgui.CalcTextSize(u8(text)).x) / 2)
imgui.Text(u8(text))
А с остальными элементами не знаю, как подобное сделать.

Вот, что я получаю, когда делю X окна на 2:
Screenshot_6.png


А мне нужно, чтобы все эелементы были вот такими
Screenshot_7.png

То есть, ровно по центру, вне зависимости от их размеров.