как открыть новое имгуи окно по нажатию на кнопку в имгуи окне + перекраска фона

jayden_daskadsasdasd

Новичок
Автор темы
11
1
Версия MoonLoader
.026-beta
хочу чтобы по нажатию на одну кнопку в окне имгуи открывалось новое имгуи окно с фотками из определенной папки, как сделать? и подскажите пожалуйста как перекрасить фон имгуи окна из прозрачного допустим в черный цвет
 

A S K I T

Активный
200
69
Для начала сделай новое окно ImGui:
-- Перед main()
window_example = imgui.ImBool(false)

-- В imgui.OnDrawFrame()
-- Задаём цвет фону окна.
imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0.00, 0.00, 0.00, 0.67))
if window_example.v then
    imgui.Begin('##window_example', window_example, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.AlwaysAutoResize)

        -----------------------
        -- Тут будут картинки.
        -----------------------

    imgui.End()
end
imgui.PopStyleColor()

Теперь вставь эту кнопку в основное окно:
if imgui.Button('Open Example Window') then window_example.v = true end

И последнее - картинки:
-- Перед main()
local image

-- В main() или в imgui.BeforeDrawFrame(), точно не помню.
image = imgui.CreateTextureFromFile("moonloader/image.png")

-- И в окно window_example, там где я пометил
imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidht(), imgui.GetWindowHeight()/2))
 

Rice.

Известный
Модератор
1,756
1,626

jayden_daskadsasdasd

Новичок
Автор темы
11
1
Для начала сделай новое окно ImGui:
-- Перед main()
window_example = imgui.ImBool(false)

-- В imgui.OnDrawFrame()
-- Задаём цвет фону окна.
imgui.PushStyleColor(imgui.Col.WindowBg, imgui.ImVec4(0.00, 0.00, 0.00, 0.67))
if window_example.v then
    imgui.Begin('##window_example', window_example, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoTitleBar + imgui.WindowFlags.AlwaysAutoResize)

        -----------------------
        -- Тут будут картинки.
        -----------------------

    imgui.End()
end
imgui.PopStyleColor()

Теперь вставь эту кнопку в основное окно:
if imgui.Button('Open Example Window') then window_example.v = true end

И последнее - картинки:
-- Перед main()
local image

-- В main() или в imgui.BeforeDrawFrame(), точно не помню.
image = imgui.CreateTextureFromFile("moonloader/image.png")

-- И в окно window_example, там где я пометил
imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidht(), imgui.GetWindowHeight()/2))
а как картинки вставлять в окно то?

мне нужно чтобы они у меня шли в строчку и столбик, типо одна под другой
 

Rice.

Известный
Модератор
1,756
1,626
Lua:
require "moonloader"
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8

local window = imgui.ImBool(false)
local window2 = imgui.ImBool(false)
local image = {}

function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    while not isSampAvailable() do wait(100) end

    imgui.Process = false

        sampRegisterChatCommand('ii', function()
            window.v = not window.v
        end)

        for i = 1, 3 do -- 3 - кол-во каритнок в папке
            image[i] = imgui.CreateTextureFromFile(getWorkingDirectory().."\\photo\\image"..i..".jpg") -- Местоположение каритнок (moonloader/photo/image.jpg)
        end

    while true do
    wait(0)
        imgui.Process = window.v or window2.v
    end
end

function imgui.OnDrawFrame()
    ScreenX, ScreenY = getScreenResolution()
    if window.v then
        imgui.SetNextWindowPos(imgui.ImVec2(ScreenX / 2 , ScreenY / 2), imgui.Cond.FirsUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(150, 200), imgui.Cond.FirstUseEver)
        imgui.Begin('Window')
        if imgui.Button('Start') then
            window2.v = not window2.v
        end
        imgui.End()
    end
    if window2.v then
        imgui.SetNextWindowPos(imgui.ImVec2(ScreenX / 2 , ScreenY / 2), imgui.Cond.FirsUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(300, 600), imgui.Cond.FirstUseEver)
        imgui.Begin('Window2')
        for i = 1, 3 do -- 3 - кол-во каритнок в папке
            imgui.Image(image[i], imgui.ImVec2(150,100)) -- 150 и 100 - размеры картинки именно в имгуи
        end
        imgui.End()
    end
end

1634030034297.png
1634030076751.png
 
  • Нравится
Реакции: linmsqn