Гайд [ImGui] Gradient Buttons [Пример Indigo]

Делать еще гайды?

  • Да

    Голосов: 11 61.1%
  • Нет(Да)

    Голосов: 1 5.6%
  • Мне на тебя насрать

    Голосов: 3 16.7%
  • Можно, если у тебя есть время

    Голосов: 3 16.7%

  • Всего проголосовало
    18
  • Опрос закрыт .
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
qq all Пастерс бойс энд гёрлс!
Сегодня сделаем себе в чит красивые баттоны (При украсим, так сказать)
Вот как будет выглядеть:
1. Просто в стоке:
Пожалуйста, авторизуйтесь для просмотра ссылки.

2. При наведении курсора:
Пожалуйста, авторизуйтесь для просмотра ссылки.

P.S. Если кто то еще хочет что либо по Indigo пишите в ЛС - предлагайте кароче)
А мы погнали)
imgui.cpp
Нажимаем Ctrl+F, и в строку поиска вводим: "bool ImGui::ButtonEx"
Screen:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Заменяем Этот код:
Код:
bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags flags)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiContext& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID(label);
    const ImVec2 label_size = CalcTextSize(label, NULL, true);

    ImVec2 pos = window->DC.CursorPos;
    if ((flags & ImGuiButtonFlags_AlignTextBaseLine) && style.FramePadding.y < window->DC.CurrentLineTextBaseOffset)
        pos.y += window->DC.CurrentLineTextBaseOffset - style.FramePadding.y;
    ImVec2 size = CalcItemSize(size_arg, label_size.x + style.FramePadding.x * 2.0f, label_size.y + style.FramePadding.y * 2.0f);

    const ImRect bb(pos, pos + size);
    ItemSize(bb, style.FramePadding.y);
    if (!ItemAdd(bb, &id))
        return false;

    if (window->DC.ButtonRepeat) flags |= ImGuiButtonFlags_Repeat;
    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);

   
    const ImU32 col = GetColorU32((hovered && held) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
    RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
    RenderTextClipped(bb.Min + style.FramePadding, bb.Max - style.FramePadding, label, NULL, &label_size, style.ButtonTextAlign, &bb);

   
    //if (pressed && !(flags & ImGuiButtonFlags_DontClosePopups) && (window->Flags & ImGuiWindowFlags_Popup))
    //    CloseCurrentPopup();

    return pressed;
}
На этот код:
Код:
bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags flags)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiContext& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID(label);
    const ImVec2 label_size = CalcTextSize(label, NULL, true);

    ImVec2 pos = window->DC.CursorPos;
    if ((flags & ImGuiButtonFlags_AlignTextBaseLine) && style.FramePadding.y < window->DC.CurrentLineTextBaseOffset)
        pos.y += window->DC.CurrentLineTextBaseOffset - style.FramePadding.y;
    ImVec2 size = CalcItemSize(size_arg, label_size.x + style.FramePadding.x * 2.0f, label_size.y + style.FramePadding.y * 2.0f);

    const ImRect bb(pos, pos + size);
    ItemSize(bb, style.FramePadding.y);
    if (!ItemAdd(bb, &id))
        return false;

    if (window->DC.ButtonRepeat) flags |= ImGuiButtonFlags_Repeat;
    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);

    auto color_grey = ImGui::GetColorU32(ImVec4(0.4, 0.4, 0.4, 0.65));
    auto color_black = ImGui::GetColorU32(ImVec4(0.1, 0.1, 0.1, 0.45));

   
   
    const ImU32 col = GetColorU32((hovered && held) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);

    RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
    RenderTextClipped(bb.Min + style.FramePadding, bb.Max - style.FramePadding, label, NULL, &label_size, style.ButtonTextAlign, &bb);
    window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImVec4(0.6f, 0.6f, 0.6f, 1.0f)));

    window->DrawList->AddRectFilledMultiColor(bb.Min, bb.Max, color_grey, color_grey, color_black, color_black);

    return pressed;
}
Этот спойлер для тех кто хочет сделать свечение при наводке другого цвета)
Если хотите что бы я добавил к этому гайду как добавить свечение другого цвета, или серый заменить на любой другой, то отпишите в коменты или в ЛС форума с пометкой: "Цвет"
Всех Чпок :*
P.S. x2 Кароче все как всегда очень просто, но прошу не писать тех, кто хочет написать сообщение по типу: "Да это же изи, просто изи, ты лох, я это за 2 секи сделаю"
Такие люди будут игнориться, я делаю гайд для тех кому не понятно как и куда что вставить)
Тех кто не понял как что куда вставлять жду в ЛС форума...... Надеюсь таких не будет :CoolStoryBob:




 
Последнее редактирование:
pCoder
Забаненный
Статус
Оффлайн
Регистрация
22 Фев 2018
Сообщения
294
Реакции[?]
66
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Годно)
Ждём ещё гайдиков
 
Забаненный
Статус
Оффлайн
Регистрация
16 Июл 2017
Сообщения
485
Реакции[?]
85
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
qq all Пастерс бойс энд гёрлс!
Сегодня сделаем себе в чит красивые табы (При украсим, так сказать)
Вот как будет выглядеть:
1. Просто в стоке:
Пожалуйста, авторизуйтесь для просмотра ссылки.

2. При наведении курсора:
Пожалуйста, авторизуйтесь для просмотра ссылки.

P.S. Если кто то еще хочет что либо по Indigo пишите в ЛС - предлагайте кароче)
А мы погнали)
imgui.cpp
Нажимаем Ctrl+F, и в строку поиска вводим: "bool ImGui::ButtonEx"
Screen:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Заменяем Этот код:
Код:
bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags flags)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiContext& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID(label);
    const ImVec2 label_size = CalcTextSize(label, NULL, true);

    ImVec2 pos = window->DC.CursorPos;
    if ((flags & ImGuiButtonFlags_AlignTextBaseLine) && style.FramePadding.y < window->DC.CurrentLineTextBaseOffset) // Try to vertically align buttons that are smaller/have no padding so that text baseline matches (bit hacky, since it shouldn't be a flag)
        pos.y += window->DC.CurrentLineTextBaseOffset - style.FramePadding.y;
    ImVec2 size = CalcItemSize(size_arg, label_size.x + style.FramePadding.x * 2.0f, label_size.y + style.FramePadding.y * 2.0f);

    const ImRect bb(pos, pos + size);
    ItemSize(bb, style.FramePadding.y);
    if (!ItemAdd(bb, &id))
        return false;

    if (window->DC.ButtonRepeat) flags |= ImGuiButtonFlags_Repeat;
    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);

    // Render
    const ImU32 col = GetColorU32((hovered && held) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);
    RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
    RenderTextClipped(bb.Min + style.FramePadding, bb.Max - style.FramePadding, label, NULL, &label_size, style.ButtonTextAlign, &bb);

    // Automatically close popups
    //if (pressed && !(flags & ImGuiButtonFlags_DontClosePopups) && (window->Flags & ImGuiWindowFlags_Popup))
    //    CloseCurrentPopup();

    return pressed;
}
На этот код:
Код:
bool ImGui::ButtonEx(const char* label, const ImVec2& size_arg, ImGuiButtonFlags flags)
{
    ImGuiWindow* window = GetCurrentWindow();
    if (window->SkipItems)
        return false;

    ImGuiContext& g = *GImGui;
    const ImGuiStyle& style = g.Style;
    const ImGuiID id = window->GetID(label);
    const ImVec2 label_size = CalcTextSize(label, NULL, true);

    ImVec2 pos = window->DC.CursorPos;
    if ((flags & ImGuiButtonFlags_AlignTextBaseLine) && style.FramePadding.y < window->DC.CurrentLineTextBaseOffset) // Try to vertically align buttons that are smaller/have no padding so that text baseline matches (bit hacky, since it shouldn't be a flag)
        pos.y += window->DC.CurrentLineTextBaseOffset - style.FramePadding.y;
    ImVec2 size = CalcItemSize(size_arg, label_size.x + style.FramePadding.x * 2.0f, label_size.y + style.FramePadding.y * 2.0f);

    const ImRect bb(pos, pos + size);
    ItemSize(bb, style.FramePadding.y);
    if (!ItemAdd(bb, &id))
        return false;

    if (window->DC.ButtonRepeat) flags |= ImGuiButtonFlags_Repeat;
    bool hovered, held;
    bool pressed = ButtonBehavior(bb, id, &hovered, &held, flags);

    auto color_grey = ImGui::GetColorU32(ImVec4(0.4, 0.4, 0.4, 0.65));
    auto color_black = ImGui::GetColorU32(ImVec4(0.1, 0.1, 0.1, 0.45));

    // Render
    //window->DrawList->AddRectFilledMultiColor(bb.Min, bb.Max, color_grey, color_grey, color_black, color_black); // Main gradient.
    const ImU32 col = GetColorU32((hovered && held) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button);

    RenderFrame(bb.Min, bb.Max, col, true, style.FrameRounding);
    RenderTextClipped(bb.Min + style.FramePadding, bb.Max - style.FramePadding, label, NULL, &label_size, style.ButtonTextAlign, &bb);
    window->DrawList->AddRect(bb.Min, bb.Max, GetColorU32(ImVec4(0.6f, 0.6f, 0.6f, 1.0f)));

    window->DrawList->AddRectFilledMultiColor(bb.Min, bb.Max, color_grey, color_grey, color_black, color_black); // Main gradient.
                                                                                                                // Automatically close popups
                                                                                                                 //if (pressed && !(flags & ImGuiButtonFlags_DontClosePopups) && (window->Flags & ImGuiWindowFlags_Popup))
                                                                                                                 //    CloseCurrentPopup();

    return pressed;
}
Этот спойлер для тех кто хочет сделать свечение при наводке другого цвета)
Если хотите что бы я добавил к этому гайду как добавить свечение другого цвета, или серый заменить на любой другой, то отпишите в коменты или в ЛС форума с пометкой: "Цвет"
Всех Чпок :*
P.S. x2 Кароче все как всегда очень просто, но прошу не писать тех, кто хочет написать сообщение по типу: "Да это же изи, просто изи, ты лох, я это за 2 секи сделаю"
Такие люди будут игнориться, я делаю гайд для тех кому не понятно как и куда что вставить)
Тех кто не понял как что куда вставлять жду в ЛС форума...... Надеюсь таких не будет :CoolStoryBob:




Когда пастишь тему хотя-бы коменты переводи
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Забаненный
Статус
Оффлайн
Регистрация
16 Июл 2017
Сообщения
485
Реакции[?]
85
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Учту, учту)) Критику люблю) По твоему мнению добавлять еще как цвет изменить для чайников?
я делаю гайд для тех кому не понятно как и куда что вставить) Тех кто не понял как что куда вставлять жду в ЛС форума​
Я хоть читаю , то что пишут
 
я выблядок
Забаненный
Статус
Оффлайн
Регистрация
15 Июн 2017
Сообщения
607
Реакции[?]
352
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Годно)
Ждём ещё гайдиков
Годно? Дам тебе крутой гайд.
Чекаешь слайдеры и чекбоксы. Там ты найдёшь ренедры фреймов, и просто делаешь MultiColor.
Сложно пиздец. Надо под каждый элемент в меню пилить по теме.
Тема - Gradient Slider
Тема - Gradient CheckBox
Тема - Gradient Child
Тема - Gradient Dildo
 
Забаненный
Статус
Оффлайн
Регистрация
16 Июл 2017
Сообщения
485
Реакции[?]
85
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Годно? Дам тебе крутой гайд.
Чекаешь слайдеры и чекбоксы. Там ты найдёшь ренедры фреймов, и просто делаешь MultiColor.
Сложно пиздец. Надо под каждый элемент в меню пилить по теме.
Тема - Gradient Slider
Тема - Gradient CheckBox
Тема - Gradient Child
Тема - Gradient Dildo
Dildo, то что нужно
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
Годно? Дам тебе крутой гайд.
Чекаешь слайдеры и чекбоксы. Там ты найдёшь ренедры фреймов, и просто делаешь MultiColor.
Сложно пиздец. Надо под каждый элемент в меню пилить по теме.
Тема - Gradient Slider
Тема - Gradient CheckBox
Тема - Gradient Child
Тема - Gradient Dildo
Нет, я имел ввиду добавить сюда в 3 шаг) Зачем создавать еще тему, если эту можно дополнить?)
А гайд расчитан скорее на тех кто не понимает как сделать)
 
return 0;
Забаненный
Статус
Оффлайн
Регистрация
6 Мар 2017
Сообщения
405
Реакции[?]
237
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
12 Сен 2016
Сообщения
10
Реакции[?]
0
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Самый полезный гайд
 
Сверху Снизу