как кнопки в child сделать посередине?

asprt

Известный
Автор темы
171
44
Версия MoonLoader
.026-beta
1604336968088.png
 

Mico

Известный
252
50
  • Нравится
Реакции: asprt

asprt

Известный
Автор темы
171
44
В прошлой теме отвечал.
Lua:
function imgui.CenterButton(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Button(text)
end

imgui.CenterButton(u8"text")
мне нужно посередине чайлда, а не окна. но всеравно спасибо
 

Tema05

Известный
1,651
561
Lua:
function imgui.CenterButton(text)
    local width = imgui.GetContentRegionAvail().x
    if width ~= imgui.GetWindowWidth() then
        -- если появился слайдер делаем отступ справа на значение отступов между элементами по x
        -- нужно так как без слайдера функция imgui.GetContentRegionAvail().x учитывает отступ от края, но если он есть отступа не будет.
        width = width - imgui.GetStyle().ItemSpacing.x
    end
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Button(text)
end
 

asprt

Известный
Автор темы
171
44
Lua:
function imgui.CenterButton(text)
    local width = imgui.GetContentRegionAvail().x
    if width ~= imgui.GetWindowWidth() then
        -- если появился слайдер делаем отступ справа на значение отступов между элементами по x
        -- нужно так как без слайдера функция imgui.GetContentRegionAvail().x учитывает отступ от края, но если он есть отступа не будет.
        width = width - imgui.GetStyle().ItemSpacing.x
    end
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Button(text)
end
спасибо, но мне кажется оно не очень ровное) как исправить?
1604399057020.png
 

Tema05

Известный
1,651
561
Последнее редактирование:

Tema05

Известный
1,651
561
Я походу понял ты не указываешь ширину кнопки вот она и занимает всю строку.
Lua:
function imgui.CenterButton(text)
    local width = imgui.GetContentRegionAvail().x
    if width ~= imgui.GetWindowWidth() then
        width = width - imgui.GetStyle().ItemSpacing.x
    end
    imgui.SetCursorPosX(width / 2)
    imgui.Button(text, imgui.ImVec2(100, 20))
end
 

Mico

Известный
252
50
мне нужно посередине чайлда, а не окна. но всеравно спасибо
в child тоже должно работать, у меня работает, но не так ровно отображается, это проблема ImGUI уже наверно :)

Это размести где нибудь выше, где все функции.
Код:
function imgui.CenterButton(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Button(text)
end

Lua:
imgui.BeginChild()
    imgui.CenterButton("текст")
imgui.EndChild

upd: сейчас присмотрелся и вроде ровно...:)



1604410066869.png
 

Tema05

Известный
1,651
561
в child тоже должно работать, у меня работает, но не так ровно отображается, это проблема ImGUI уже наверно :)

Это размести где нибудь выше, где все функции.
Код:
function imgui.CenterButton(text)
    local width = imgui.GetWindowWidth()
    local calc = imgui.CalcTextSize(text)
    imgui.SetCursorPosX( width / 2 - calc.x / 2 )
    imgui.Button(text)
end

Lua:
imgui.BeginChild()
    imgui.CenterButton("текст")
imgui.EndChild

upd: сейчас присмотрелся и вроде ровно...:)



Посмотреть вложение 74163
Что за бред зачем ты высчитываешь размер текста и по нему делаешь отступы?