обрез

Lance_Sterling

Известный
Автор темы
995
355
Версия MoonLoader
.026-beta
схуяли обрезается dl:AddRectFilledMultiColor
1689275131537.png


Lua:
imgui.OnFrame(
    function() return inventory.active end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 800, 400
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Инвентарь', _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse)
       
        local dl = imgui.GetWindowDrawList()
        local p = imgui.GetCursorScreenPos()

        dl:AddRectFilledMultiColor(imgui.ImVec2(p.x - 10, p.y - 10), imgui.ImVec2(p.x + 400, p.y + 400), 0xFC2F2CCC, 0x00000000, 0x00000000, 0xFC2F2CCC)
       
        --другие элементы

        imgui.End()
    end
)
 
Последнее редактирование:

Lance_Sterling

Известный
Автор темы
995
355
ну так и укажи нулевые координаты, если хочешь чтобы он сначала его рендерил
он рендерит его прямиком с нуля(верхняя левая часть экрана)

так же все равно отступ есть
 

wojciech?

Известный
Проверенный
404
360
можно попробовать через imgui.GetStyle().WindowPadding = imgui.ImVec2 убрать этот отступ слева, но тогда все отступы в окне заруинятся)
с ним:
1689276435561.png

без него:
1689276477711.png



но проще, как мне кажется, сделать фон окна прозрачным и на его месте рендерить dl:AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ~0), перед твоим примитивом:
Lua:
imgui.OnFrame(
    function() return inventory.active end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 800, 400
        imgui.SetNextWindowBgAlpha(0.0)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Инвентарь', _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse)
      
        local dl = imgui.GetWindowDrawList()
        local p = imgui.GetCursorScreenPos()

        local style = imgui.GetStyle()
        local windowRounding = style.WindowRounding
        local windowColor = imgui.ColorConvertFloat4ToU32(style.Colors[imgui.Col.WindowBg])

        dl:AddRectFilled(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + 780, p.y + 380), windowColor, windowRounding, 10)
        dl:AddRectFilledMultiColor(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + 400, p.y + 400), 0xFC2F2CCC, 0x00000000, 0x00000000, 0xFC2F2CCC)
      
        --другие элементы

        imgui.End()
    end
)


1689277170211.png
 
Последнее редактирование:

Lance_Sterling

Известный
Автор темы
995
355
можно попробовать через imgui.GetStyle().WindowPadding = imgui.ImVec2 убрать этот отступ слева, но тогда все отступы в окне заруинятся)
с ним:
Посмотреть вложение 207851
без него:
Посмотреть вложение 207852


но проще, как мне кажется, сделать фон окна прозрачным и на его месте рендерить dl:AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners_flags = ~0), перед твоим примитивом:
Lua:
imgui.OnFrame(
    function() return inventory.active end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 800, 400
        imgui.SetNextWindowBgAlpha(0.0)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Инвентарь', _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse)
     
        local dl = imgui.GetWindowDrawList()
        local p = imgui.GetCursorScreenPos()

        local style = imgui.GetStyle()
        local windowRounding = style.WindowRounding
        local windowColor = imgui.ColorConvertFloat4ToU32(style.Colors[imgui.Col.WindowBg])

        dl:AddRectFilled(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + 780, p.y + 380), windowColor, windowRounding, 10)
        dl:AddRectFilledMultiColor(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + 400, p.y + 400), 0xFC2F2CCC, 0x00000000, 0x00000000, 0xFC2F2CCC)
     
        --другие элементы

        imgui.End()
    end
)


Посмотреть вложение 207853
мне надо еще закруглить края, а я дравлист как матешу не учил, чо там сделать над я забыл
 

wojciech?

Известный
Проверенный
404
360
мне надо еще закруглить края, а я дравлист как матешу не учил, чо там сделать над я забыл
если ты хочешь закруглить rect с градиентом, то по дефолту там нет такого аргумента. как вариант, рендерить ещё один примитив, который будет выступать закругленной прослойкой сбоку

Lua:
imgui.OnFrame(
    function() return inventory.active end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 800, 400
        imgui.SetNextWindowBgAlpha(0.0)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin(u8'Инвентарь', _, imgui.WindowFlags.NoCollapse + imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.NoMove + imgui.WindowFlags.NoScrollbar + imgui.WindowFlags.NoScrollWithMouse)
     
        local dl = imgui.GetWindowDrawList()
        local p = imgui.GetCursorScreenPos()

        local style = imgui.GetStyle()
        local windowRounding = style.WindowRounding
        local windowColor = imgui.ColorConvertFloat4ToU32(style.Colors[imgui.Col.WindowBg])

        dl:AddRectFilled(imgui.ImVec2(p.x + 10, p.y), imgui.ImVec2(p.x + 790, p.y + 380), windowColor, windowRounding, 10)
        dl:AddRectFilled(imgui.ImVec2(p.x, p.y), imgui.ImVec2(p.x + 10, p.y + 380), 0xFC2F2CCC, windowRounding, 5)
        dl:AddRectFilledMultiColor(imgui.ImVec2(p.x + 10, p.y), imgui.ImVec2(p.x + 400, p.y + 380), 0xFC2F2CCC, 0x00000000, 0x00000000, 0xFC2F2CCC)
     
        --другие элементы

        imgui.End()
    end
)

1689288703693.png
 
  • Нравится
Реакции: Heav