Как покрасить иконку в кнопке, текст должен быть белым. На mimgui

deepseek#1

Новичок
Автор темы
5
0
Искал долго как покрасить иконку в кнопке, но не нашел.




Спасибо заранее кто помог.
 

chapo

tg/inst: @moujeek
Модератор
9,083
12,091
Стандартными способами никак, но можно нарисовать иконку поверх кнопки
Lua:
function imgui.DrawButtonWithColoredIcon(text, icon, size, color, colorHovered, colorActive)
    local buttonPos = imgui.GetCursorScreenPos();
    local buttonText = icon .. text;
    local buttonTextSize = imgui.CalcTextSize(buttonText);
    local result = imgui.Button(buttonText, size);
    local isHovered, isActive = imgui.IsItemHovered(), imgui.IsItemActive();
    local iconSize = imgui.CalcTextSize(icon);
    if (isHovered) then color = colorHovered or color end
    if (isActive) then color = colorActive or color end
    imgui.GetWindowDrawList():AddText(
        buttonPos + imgui.ImVec2(size.x / 2 - buttonTextSize.x / 2, size.y / 2 - iconSize.y / 2),
        color,
        icon
    );
    return result;
end
1745912705543.png
 
  • Нравится
Реакции: VanoKLR и deepseek#1

deepseek#1

Новичок
Автор темы
5
0
Стандартными способами никак, но можно нарисовать иконку поверх кнопки
Lua:
function imgui.DrawButtonWithColoredIcon(text, icon, size, color, colorHovered, colorActive)
    local buttonPos = imgui.GetCursorScreenPos();
    local buttonText = icon .. text;
    local buttonTextSize = imgui.CalcTextSize(buttonText);
    local result = imgui.Button(buttonText, size);
    local isHovered, isActive = imgui.IsItemHovered(), imgui.IsItemActive();
    local iconSize = imgui.CalcTextSize(icon);
    if (isHovered) then color = colorHovered or color end
    if (isActive) then color = colorActive or color end
    imgui.GetWindowDrawList():AddText(
        buttonPos + imgui.ImVec2(size.x / 2 - buttonTextSize.x / 2, size.y / 2 - iconSize.y / 2),
        color,
        icon
    );
    return result;
end
Посмотреть вложение 268931
Можешь дать пример использования?

Lua:
imgui.DrawButtonWithColoredIcon('Hello', faicons('user'), imgui.ImVec2(200, 50), 0xFF0000ff, 0xFFff0000, 0xFF00ff00);
Снимок экрана 2025-04-29 185031.png

у меня почему то отображается 2 иконки и крашеная с права, и цветная иконка меньше, и если поменять иконку и текст местами то будет раздваиваться текст. как фиксить?
 
Последнее редактирование: