В прошлой теме отвечал.
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")
мне нужно посередине чайлда, а не окна. но всеравно спасибоВ прошлой теме отвечал.
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")
Можно вместо GetWindowWidth попробовать GetItemWidthмне нужно посередине чайлда, а не окна. но всеравно спасибо
Можно вместо GetWindowWidth попробовать GetItemWidth
а куда его вписывать?)imgui.GetContentRegionAvail().x же нужно юзать. GetWindowWidth даёт ширину всего imgui, а это функция ширину в том месте где расположена функция.
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
спасибо, но мне кажется оно не очень ровное) как исправить?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
Или кидай больше кода или сам дебагай все переменные и ищи какая неправильно определяется.спасибо, но мне кажется оно не очень ровное) как исправить?
Посмотреть вложение 74130
Я походу понял ты не указываешь ширину кнопки вот она и занимает всю строку.
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
в 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
imgui.BeginChild()
imgui.CenterButton("текст")
imgui.EndChild
Что за бред зачем ты высчитываешь размер текста и по нему делаешь отступы?в 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