rgb полоса в имгуи

Статус
В этой теме нельзя размещать новые ответы.

goodflex

Активный
Автор темы
280
58
удаление решенного вопроса
Как сделать rgb полосу в имгуи? (чтобы цвет менялся)

123673


вот как тут
 

Вложения

  • FomikusOrigArz.lua
    40.6 KB · Просмотры: 14
Последнее редактирование:
Решение
Нашёл тут такую функу

Lua:
function childStart(size, size_X, size_Y, name, offset)
    local r1, g1, b1, a1 = rainbow(2, 255, 100 + offset)
    local r2, g2, b2, a2 = rainbow(2, 255, 0 + offset)
    gr_line_with_up_padding(30, size_X, size, join_argb(a1, r1, g1, b1), join_argb(a2, r2, g2, b2))
    imgui.SetCursorPosY(imgui.GetCursorPosY() + size * 2 - 2)
    imgui.SetCursorPosX(imgui.GetCursorPosX() - (size / 100 * 1.5))
    imgui.BeginChild(name, imgui.ImVec2(size_X + (size / 100) - 1, size_Y), true, imgui.WindowFlags.NoScrollbar)
end
Не стоит отвечать если не разобрался, начиная с того что gr_line_with_up_padding не определена, заканчивая открытием чайлда в конце

Код обычной полосочки вот тут -...

riverya4life

Известный
383
167
Как сделать rgb полосу в имгуи? (чтобы цвет менялся)

123673


вот как тут
Нашёл тут такую функу

Lua:
function childStart(size, size_X, size_Y, name, offset)
    local r1, g1, b1, a1 = rainbow(2, 255, 100 + offset)
    local r2, g2, b2, a2 = rainbow(2, 255, 0 + offset)
    gr_line_with_up_padding(30, size_X, size, join_argb(a1, r1, g1, b1), join_argb(a2, r2, g2, b2))
    imgui.SetCursorPosY(imgui.GetCursorPosY() + size * 2 - 2)
    imgui.SetCursorPosX(imgui.GetCursorPosX() - (size / 100 * 1.5))
    imgui.BeginChild(name, imgui.ImVec2(size_X + (size / 100) - 1, size_Y), true, imgui.WindowFlags.NoScrollbar)
end
 
  • Нравится
Реакции: goodflex

goodflex

Активный
Автор темы
280
58
Нашёл тут такую функу

Lua:
function childStart(size, size_X, size_Y, name, offset)
    local r1, g1, b1, a1 = rainbow(2, 255, 100 + offset)
    local r2, g2, b2, a2 = rainbow(2, 255, 0 + offset)
    gr_line_with_up_padding(30, size_X, size, join_argb(a1, r1, g1, b1), join_argb(a2, r2, g2, b2))
    imgui.SetCursorPosY(imgui.GetCursorPosY() + size * 2 - 2)
    imgui.SetCursorPosX(imgui.GetCursorPosX() - (size / 100 * 1.5))
    imgui.BeginChild(name, imgui.ImVec2(size_X + (size / 100) - 1, size_Y), true, imgui.WindowFlags.NoScrollbar)
end
в имгуи как вставить?
 

siwage

Активный
193
67
в имгуи как вставить?
Вставляй в свой файл куда хочешь,
затем используй

cringe:
--Вставить можешь после Imgui.Begin()
childStart(2.5, 150, 284, '##name', 150)
--Размер, Размер по Х, Размер по Y, Название, Какой-то оффсет(поставь тоже 150).
--Решетки можешь убрать если нужно чтоб текст отображался.
 
  • Нравится
Реакции: YarikVL и goodflex

Fomikus

Известный
Проверенный
473
346
Нашёл тут такую функу

Lua:
function childStart(size, size_X, size_Y, name, offset)
    local r1, g1, b1, a1 = rainbow(2, 255, 100 + offset)
    local r2, g2, b2, a2 = rainbow(2, 255, 0 + offset)
    gr_line_with_up_padding(30, size_X, size, join_argb(a1, r1, g1, b1), join_argb(a2, r2, g2, b2))
    imgui.SetCursorPosY(imgui.GetCursorPosY() + size * 2 - 2)
    imgui.SetCursorPosX(imgui.GetCursorPosX() - (size / 100 * 1.5))
    imgui.BeginChild(name, imgui.ImVec2(size_X + (size / 100) - 1, size_Y), true, imgui.WindowFlags.NoScrollbar)
end
Не стоит отвечать если не разобрался, начиная с того что gr_line_with_up_padding не определена, заканчивая открытием чайлда в конце

Код обычной полосочки вот тут - https://www.blast.hk/threads/13380/post-541850

Рисует полосочку со скруглением сверху/снизу
Код пажилой:
function gr_line_with_up_padding(circle_angles, distance, size, from, to)
    distance = distance - size * 2 - 3
    local draw_list = imgui.GetWindowDrawList()
    local p = imgui.GetCursorScreenPos()
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + size  + (size / 100), p.y + size), size, from, circle_angles)
    draw_list:AddRectFilled(imgui.ImVec2(p.x, p.y + size), imgui.ImVec2(p.x + size * 2, p.y + size * 2), from)
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + size + (size / 100) + distance, p.y + size), size, to, circle_angles)
    draw_list:AddRectFilled(imgui.ImVec2(p.x + size + distance, p.y + size), imgui.ImVec2(p.x + size * 2 + distance, p.y + size * 2), to)
    draw_list:AddRectFilled(imgui.ImVec2(p.x + size, p.y), imgui.ImVec2(p.x + distance + size, p.y + size * 2), from)
    local a, r, g, b = explode_argb(to)
    for i = 0, distance do
        a = (i / distance) * 255
    draw_list:AddRectFilled(imgui.ImVec2(p.x + i + size, p.y), imgui.ImVec2(p.x + 1 + i + size, p.y + size * 2), join_argb(a, r, g, b))
    end
end

function gr_line_with_down_padding(circle_angles, distance, size, from, to)
    distance = distance - size * 2 - 3
    local draw_list = imgui.GetWindowDrawList()
    local p = imgui.GetCursorScreenPos()
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + size  + (size / 100), p.y + size), size, from, circle_angles)
    draw_list:AddRectFilled(imgui.ImVec2(p.x, p.y + size), imgui.ImVec2(p.x + size * 2, p.y), from)
    draw_list:AddCircleFilled(imgui.ImVec2(p.x + size + (size / 100) + distance, p.y + size), size, to, circle_angles)
    draw_list:AddRectFilled(imgui.ImVec2(p.x + size + distance, p.y + size), imgui.ImVec2(p.x + size * 2 + distance, p.y), to)
    draw_list:AddRectFilled(imgui.ImVec2(p.x + size, p.y), imgui.ImVec2(p.x + distance + size, p.y + size * 2), from)
    local a, r, g, b = explode_argb(to)
    for i = 0, distance do
        a = (i / distance) * 255
    draw_list:AddRectFilled(imgui.ImVec2(p.x + i + size, p.y), imgui.ImVec2(p.x + 1 + i + size, p.y + size * 2), join_argb(a, r, g, b))
    end
end

function rainbow(speed, alpha, offset)
    local clock = os.clock() + offset
    local r = math.floor(math.sin(clock * speed) * 127 + 128)
    local g = math.floor(math.sin(clock * speed + 2) * 127 + 128)
    local b = math.floor(math.sin(clock * speed + 4) * 127 + 128)
    return r, g, b, alpha
end
function join_argb(a, r, g, b) -- by FYP
    local argb = b  -- b
    argb = bit.bor(argb, bit.lshift(g, 8))  -- g
    argb = bit.bor(argb, bit.lshift(r, 16)) -- r
    argb = bit.bor(argb, bit.lshift(a, 24)) -- a
    return argb
end
function explode_argb(argb)
    local a = bit.band(bit.rshift(argb, 24), 0xFF)
    local r = bit.band(bit.rshift(argb, 16), 0xFF)
    local g = bit.band(bit.rshift(argb, 8), 0xFF)
    local b = bit.band(argb, 0xFF)
    return a, r, g, b
end
 
Последнее редактирование:
  • Нравится
Реакции: whyega52, YarikVL и Vespan

Vespan

loneliness
Проверенный
2,135
1,763
Да уж, с твоими знаниями луа только вот так скрипт и делать через blast hk вопросы-помощь
Не бы в сам код зайти и внимательно посмотреть, и что то узнать для себя нового

Да и эта функция есть в теме сниппетах-функции луа
(Либо похожая)
 
Статус
В этой теме нельзя размещать новые ответы.