Как засунуть картинку в ImGUI

Hader

Потрачен
Автор темы
37
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Версия MoonLoader
.026-beta
Как засунуть картинку в ImGUI и указать ее расположения и размер?
 

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,778
11,222
Lua:
local image = {
    file = getWorkingDirectory()..'\\resource\\картинка.png',
    handle = nil
}

function main()
    while not isSampAvailable() do wait(0) end
    if doesFileExist(image.file) then
        image.handle = imgui.CreateTextureFromFile(image.file)
    end 
    while true do
        wait(0)
        
    end
end

--imgui
if image.handle then
    imgui.SetCursorPos(imgui.ImVec2(положение x, положение y))
    imgui.Image(image.handle, imgui.ImVec2(ширина, высота))
end
 

Liquit

Активный
277
91
А как узнать положение, и размеры?
самому расположить, размер можно узнать в свойствах картинки(пкм по файлу - св-ва)
imgui при необходимости само заресайзит картинку под заданные тобой размеры
 

ewin

Известный
675
369
Как засунуть картинку в кнопку, точнее вывод по нажатию или наведению(как всплывающая подсказка)
Lua:
imgui.Button("Button##1")
if imgui.IsItemHovered() then
    imgui.BeginTooltip();
    --если хочешь вывести тупо текст, то функция ниже, если картинку - выше кинули
    imgui.TextUnformatted("Button number 1");
    imgui.EndTooltip();
end
 
  • Нравится
Реакции: Ackerman_Kirito

Ackerman_Kirito

Новичок
24
0
Lua:
imgui.Button("Button##1")
if imgui.IsItemHovered() then
    imgui.BeginTooltip();
    --если хочешь вывести тупо текст, то функция ниже, если картинку - выше кинули
    imgui.TextUnformatted("Button number 1");
    imgui.EndTooltip();
end
Привет спасибо за помощь, вот что получилось, код ниже и скрины
вот:
    imgui.Begin(u8"ID Автомобилей v: 1.0 · by Ackerman ®", main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                    if imgui.Selectable("401 Bravura", false) then
                        imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                    end
                    
                    if imgui.IsItemHovered("401 Bravura") then
                        imgui.BeginTooltip(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                    end

 

Ackerman_Kirito

Новичок
24
0
потому что между begin tooltip и end tooltip нету контента
А как туда путь файла прописать?

...:
    imgui.Begin(u8"ID Автомобилей v: 1.0 · by Ackerman ®", main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                    if imgui.Selectable("401 Bravura", false) then
                        imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidth(200), imgui.GetWindowWidth(300)/2))
                    end
                    
                    if imgui.IsItemHovered("401 Bravura") then
                        imgui.BeginTooltip(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                        imgui.EndTooltip()
                    end
                    
    imgui.End()
 

#Northn

Police Helper «Reborn» — уже ШЕСТЬ лет!
Всефорумный модератор
2,635
2,485
А как туда путь файла прописать?

...:
    imgui.Begin(u8"ID Автомобилей v: 1.0 · by Ackerman ®", main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                    if imgui.Selectable("401 Bravura", false) then
                        imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidth(200), imgui.GetWindowWidth(300)/2))
                    end
                   
                    if imgui.IsItemHovered("401 Bravura") then
                        imgui.BeginTooltip(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                        imgui.EndTooltip()
                    end
                   
    imgui.End()
никак, нужно предварительно грузить изображение
 

Ackerman_Kirito

Новичок
24
0
никак, нужно предварительно грузить изображение
У меня сейчас error будет, простите за тупость. Ниже полный код кину скажите строчки что куда писать пожалуйста
Полный код:
script_name("Transport") -- Название скрипта
script_author("by K.Ackerman") -- Автор скрипта
script_description("Информация транспорта версия 1.0") -- Описание скрипта

require "lib.moonloader" -- Подключение библиотеки
local tag = "[ID транспорта 1.0]: " -- Локальнв=ая переменная
local keys = require "vkeys" --
local imgui = require 'imgui'
local encoding = require 'encoding'
encoding.default = "CP1251"
u8 = encoding.UTF8
local inicfg = require 'inicfg'
local fa = require 'fAwesome5'
local flags = require 'moonloader'.font_flag
local events = require 'samp.events'

local combo_select = imgui.ImInt(0)

local tag = "[Информация]: " --
local tag1 = "[Подсказка]: "
local label = 0
local main_color = 0x5A90CE
local main_color_text = "{5A90CE}"
local wite_color = "{FFFFFF}"
--
local sw, sh = getScreenResolution()

-- Спец переменные для imgui
local main_window_state = imgui.ImBool(false)
arrSelectable = {false, false}

local text_buffer = imgui.ImBuffer(256)

local imgur

function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    
    sampRegisterChatCommand("inf", cmd_inf)
    
    imgui.Process = false    -- Процесс
    
    sampAddChatMessage(tag .. "{FFFFFF}Скрипт успешно загружен | Версия 1.0 | by Ackerman", 0xFF0000)
    sampAddChatMessage(tag1 .. "{FFFFFF}Для вывода информации используйте команду {008000}/inf", 0xFF0000)
    -- Разовый цикл
    
    image = imgui.CreateTextureFromFile("moonloader/images/Vehicle_400.")
    
    while true do
        wait(0)
        
        if main_window_state.v == false then
            imgui.Process = false
        end
        -- Бесконечный цикл
    end
end

function cmd_inf(arg)
    sampAddChatMessage(tag .. "{FFFFFF}Добро пожаловать в меню.", 0xFF0000)
    main_window_state.v = not main_window_state.v
    imgui.Process = main_window_state.v
end

function imgui.OnDrawFrame()

    if not main_window_state then
        imgui.Process = false
    end

    -- Положение окна
    imgui.SetNextWindowSize(imgui.ImVec2(400, 500), imgui.Cond.FirstUseEver)
    imgui.SetNextWindowPos(imgui.ImVec2((sw / 2), sh / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
    --
    

    imgui.Begin(u8"ID Автомобилей v: 1.0 · by Ackerman ®", main_window_state, imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
                    if imgui.Selectable("401 Bravura", false) then
                        imgui.Image(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                    end
                    
                    if imgui.IsItemHovered("401 Bravura") then
                        imgui.BeginTooltip(image, imgui.ImVec2(imgui.GetWindowWidth(), imgui.GetWindowWidth()/2))
                        imgui.EndTooltip()
                    end
                    
    imgui.End()
    
end

-- Центровка названия в окне

function apply_custom_style()
    imgui.SwitchContext()
    local style = imgui.GetStyle()
    style.WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
end
apply_custom_style()