hex альфа канал градиент

asprt

Известный
Автор темы
167
41
Версия MoonLoader
Другое
Как мне можно уменьшить до 0 прозрачность во втором цвете?

как я пытаюсь зарендерить:

gradient_box(125, 500 - 950, 140, 20, 0xff212121, 0xff212121)

1636287930568.png


градиент:

Lua:
function join_argb(a, r, g, b)
    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

--[[
    @params:
        * from от какого цвета(в HEX)
        * to до какого цвета(в HEX)
        * vertical true = сверху вниз
]]
function gradient_box(x, y, w, h, from, to, vertical)
    renderDrawBox(x, y, w, h, from)
    local a, r, g, b = explode_argb(to)

    local w_h = vertical and h or w

    for i = 0, w_h do
        local a = (i / w_h) * 255
        if vertical then
            renderDrawBox(x, y + i, w, 1, join_argb(a, r, g, b))
        else
            renderDrawBox(x + i, y, 1, h, join_argb(a, r, g, b))
        end
    end
end
 
Последнее редактирование: