Загрузка...

Great guide to ImGui

Thread in C/C++ created by Fgdhhjj Sep 22, 2021. 6017 views

  1. Fgdhhjj
    Fgdhhjj Topic starter Sep 22, 2021 14 Jul 10, 2019
    Как установить ImGui?
    • Заходим на https://github.com/ocornut/imgui
    • Скачиваем архив
    • Создаём папку на рабочем столе.
    • И все .cpp + .h файлы перетаскиваем в нашу папку
    Всё, теперь копируем папку, заходим в наше проект -> добавить существующий элемент -> вставляем нашу папку и выбираем её.

    Как подключить ImGui?
    Code

    #include "imgui/imgui.h"
    #include "imgui/imgui_impl_dx9.h"
    #include "imgui/imgui_impl_win32.h"
    #include <dinput.h>
    #include <tchar.h>
    #include <d3d9.h>
    #pragma comment(lib, "d3d9.lib")


    Знакомство с ImGui:

    ImGui::Begin и ImGui::End
    Служит для начала отрисовки вашего меню:
    Code
    ImGui::Begin("Name Hack", &G.MenuOpen, ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings);
    // В ковычках название вашего чита(можно написать всё что угодно, если использовать специальный флаг, который убирает эту надпись.)
    // &G.MenuOpen отвечает за отрисовку меню, только когда оно открыто, а не постоянно, это переменная, которую мы должны изменять.
    ImGui::End // служит для конца отрисовки меню
    Флаг - настройка чита, краткое описание большинства флагов
    Code
    ImGuiWindowFlags_NoTitleBar - убирает заголовок.
    ImGuiWindowFlags_NoResize - запрещает изменять размер окна.
    ImGuiWindowFlags_NoMove - запрещает передвигать окно.
    ImGuiWindowFlags_NoScrollbar - убирает ползунок прокрутки.

    ImGuiWindowFlags_NoCollapse - запрещает минимизировать окно при двойном клике.ImGuiWindowFlags_NoScrollWithMouse - отключает прокрутку колёсиком мыши.
    ImGuiWindowFlags_NoSavedSettings - отключает сохранения настроек в файл.
    ImGuiWindowFlags_AlwaysUseWindowPadding - создает отступы вокруг окна.
    ImGuiWindowFlags_AlwaysAutoResize - автоматически ставит размер окна.
    ImGuiWindowFlags_Tooltip - включает подсказки.
    ImGuiWindowFlags_ShowBorders - включает обводку элементов.
    ImGuiWindowFlags_NoInputs - отключает мышь и клавиатуру.
    ImGuiWindowFlags_NoFocusOnAppearing - отключает фокус при переходе от скрытого к видимому состоянию.
    Весь код мы пишем посреди ImGui::Begin и ImGui::End.

    ImGui::CheckBox
    Code
    ImGui::Checkbox("Bhop", &bhop); //В ковычках название чекбокса и за что отвечает, Можно писать что угодно, &bhop - bool переменная, при активном чекбоксе она - true, при неактивном - false


    ImGui::Slider
    Code
    ImGui::SliderFloat("test2", &slider, 0, 10); //В ковычках как всегда название слайдера, &slider - int переменная, которая берет значине слайдера



    ImGui::Button

    Code
    if (ImGui::Button("label"))

    a = true;
    // Это обычная кнопка, в ковычках её название которое будет рендерится внутри неё, на второй строчке a = true; функция которая будет выполняться при нажатии кнопки. Если чекбокс будет выполнять её пока он включен, кнопка выполнит только 1 раз


    ImGui::SameLine();
    // Переносит функцию в противоположную сторону(направо)

    ImGui::Spacing();

    // Переносит функцию вниз

    Стили
    Стили в имгуи служат для того чтоб меню, окно предмет принял нужный цвет или форму. Рассмотрим стили для цвета. Чтоб их создать надо создать функцию и вызвать её:
    Code
    void ColorStyles() {
    ImVec4* colors = ImGui::GetStyle().Colors;
    colors[ImGuiCol_Text] = ImVec4(1.00f, 1.00f, 1.00f, 1.f);
    colors[ImGuiCol_TextDisabled] = ImVec4(0.73f, 0.75f, 0.74f, 1.f);
    colors[ImGuiCol_WindowBg] = ImColor(24, 26, 30);
    colors[ImGuiCol_ChildBg] = ImVec4(0.39f, 0.00f, 0.63f, 0.f);
    colors[ImGuiCol_PopupBg] = ImColor(55, 59, 62);
    colors[ImGuiCol_Border] = ImColor(55, 59, 62, 35);
    colors[ImGuiCol_BorderShadow] = ImColor(55, 59, 62, 50);
    colors[ImGuiCol_FrameBg] = ImColor(0.239f, 0.239f, 0.349f, 0.5);
    colors[ImGuiCol_FrameBgHovered] = ImColor(0.216f, 0.216f, 0.376f, 0.5f);
    colors[ImGuiCol_FrameBgActive] = ImColor(0.216f, 0.216f, 0.376f, 0.6f);
    colors[ImGuiCol_TitleBg] = ImVec4(0.75f, 0.01f, 0.94f, 1.f);
    colors[ImGuiCol_TitleBgActive] = ImVec4(0.39f, 0.00f, 0.63f, 1.f);
    colors[ImGuiCol_TitleBgCollapsed] = ImVec4(0.39f, 0.00f, 0.63f, 1.f);
    colors[ImGuiCol_MenuBarBg] = ImVec4(0.34f, 0.16f, 0.16f, 1.f);
    colors[ImGuiCol_ScrollbarBg] = ImVec4(0.94f, 0.02f, 1.28f, 1.f);
    colors[ImGuiCol_ScrollbarGrab] = ImVec4(0.94f, 0.02f, 1.28f, 1.f);
    colors[ImGuiCol_ScrollbarGrabHovered] = ImVec4(0.94f, 0.02f, 1.28f, 1.f);
    colors[ImGuiCol_ScrollbarGrabActive] = ImVec4(0.94f, 0.02f, 1.28f, 1.f);
    colors[ImGuiCol_CheckMark] = ImVec4(0.063f, 0.349f, 0.851f, 1.f);
    colors[ImGuiCol_SliderGrab] = ImVec4(0.325f, 0.451f, 0.839f, 1.f);
    colors[ImGuiCol_SliderGrabActive] = ImVec4(0.325f, 0.451f, 0.839f, 1.f);
    colors[ImGuiCol_Button] = ImColor(1, 1, 1, 0);
    colors[ImGuiCol_ButtonHovered] = ImColor(1, 1, 1, 45);
    colors[ImGuiCol_ButtonActive] = ImColor(1, 1, 1, 55);
    colors[ImGuiCol_Header] = ImColor(132, 136, 139, 50);
    colors[ImGuiCol_HeaderHovered] = ImColor(132, 136, 139);
    colors[ImGuiCol_HeaderActive] = ImColor(132, 136, 139);
    colors[ImGuiCol_Separator] = ImVec4(0.43f, 0.43f, 0.50f, 1.f);
    colors[ImGuiCol_SeparatorHovered] = ImVec4(0.71f, 0.39f, 0.39f, 1.f);
    colors[ImGuiCol_SeparatorActive] = ImVec4(0.71f, 0.39f, 0.39f, 1.f);
    colors[ImGuiCol_ResizeGrip] = ImVec4(0.71f, 0.39f, 0.39f, 1.f);
    colors[ImGuiCol_ResizeGripHovered] = ImVec4(0.84f, 0.66f, 0.66f, 1.f);
    colors[ImGuiCol_ResizeGripActive] = ImVec4(0.84f, 0.66f, 0.66f, 1.f);
    colors[ImGuiCol_Tab] = ImVec4(0.71f, 0.39f, 0.39f, 1.f);
    colors[ImGuiCol_TabHovered] = ImVec4(0.84f, 0.66f, 0.66f, 1.f);
    colors[ImGuiCol_TabActive] = ImVec4(0.84f, 0.66f, 0.66f, 1.f);
    colors[ImGuiCol_TabUnfocused] = ImVec4(0.07f, 0.10f, 0.15f, 1.f);
    colors[ImGuiCol_TabUnfocusedActive] = ImVec4(0.14f, 0.26f, 0.42f, 1.f);
    colors[ImGuiCol_PlotLines] = ImVec4(0.61f, 0.61f, 0.61f, 1.f);
    colors[ImGuiCol_PlotLinesHovered] = ImVec4(1.00f, 0.43f, 0.35f, 1.f);
    colors[ImGuiCol_PlotHistogram] = ImColor(0.90f, 0.70f, 0.00f, 1.f);
    colors[ImGuiCol_PlotHistogramHovered] = ImVec4(1.00f, 0.60f, 0.00f, 1.f);
    colors[ImGuiCol_TextSelectedBg] = ImColor(35, 35, 54);
    colors[ImGuiCol_DragDropTarget] = ImVec4(1.00f, 1.00f, 0.00f, 1.f);
    colors[ImGuiCol_NavHighlight] = ImVec4(0.41f, 0.41f, 0.41f, 1.f);
    colors[ImGuiCol_NavWindowingHighlight] = ImVec4(1.00f, 1.00f, 1.00f, 1.f);
    colors[ImGuiCol_NavWindowingDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 1.f);
    colors[ImGuiCol_ModalWindowDimBg] = ImVec4(0.80f, 0.80f, 0.80f, 1.f);
    }
    Я взял пример из своего кода, color это переменная настройки цветов, которую мы создали в самом начале функции, в квадратных скобочках идёт название настройки и после = цвет в ImVec4. Это тот-же RGBA, только 255 по ргба = 1.f по ImVec4. Вот функция для того, чтоб писать цвета в RGBA: https://zelenka.guru/threads/2981948/ А вот что значат основные настройки цветов:
    Code
    [ImGuiCol_Text] = Цвет для текста,который будет использоваться для всего меню.
    [ImGuiCol_TextDisabled] = Цвет для "не активного/отключенного текста".
    [ImGuiCol_WindowBg] = Цвет заднего фона.
    [ImGuiCol_PopupBg] = Цвет,который используется для заднего фона в ImGui::Combo и ImGui::MenuBar.
    [ImGuiCol_Border] = Цвет,который используется для обводки вашего меню.
    [ImGuiCol_BorderShadow] = Цвет для тени обводки.
    [ImGuiCol_FrameBg] = Цвет для ImGui::InputText и для заднего фона ImGui::Checkbox
    [ImGuiCol_FrameBgHovered] = Цвет,который используется практически так же что и тот,который выше,кроме того,что он изменяет цвет при наводке на ImGui::Checkbox.
    [ImGuiCol_FrameBgActive] = Активный цвет.
    [ImGuiCol_TitleBg] = Цвет для изменения главного места в самом верху меню (там где находится название вашего "топприватногохакаинзеворлдвсес0писалсяполгода".
    [ImGuiCol_TitleBgCollapsed] = Свернутый цвет тайтла.
    [ImGuiCol_TitleBgActive] = Цвет активного окна тайтла,т.е если вы имеете меню с несколькими окнами,то этот цвет будет использоваться для окна,в котором вы будет находится на данный момент.
    [ImGuiCol_MenuBarBg] = Цвет для меню бара. (Не во всех сурсах видел такое,но все же)
    [ImGuiCol_ScrollbarBg] = Цвет для заднего фона "полоски",через которую можно "листать" функции в софте по вертикале.
    [ImGuiCol_ScrollbarGrab] = Цвет для сколл бара,т.е для "полоски",которая используется для передвижения меню по вертикали.
    [ImGuiCol_ScrollbarGrabHovered] = Цвет для "свернутого/не используемого" скролл бара.
    [ImGuiCol_ScrollbarGrabActive] = Цвет для "активной" деятельности в том окне,где находится скролл бар.
    [ImGuiCol_ComboBg] = Цвет для заднего фона для ImGui::Combo.
    [ImGuiCol_CheckMark] = Цвет для вашего ImGui::Checkbox.
    [ImGuiCol_SliderGrab] = Цвет для ползунка ImGui::SliderInt и ImGui::SliderFloat.
    [ImGuiCol_SliderGrabActive] = Цвет ползунка,который будет отображаться при использовании SliderFloat и SliderInt.
    [ImGuiCol_Button] = цвет для кнопки.
    [ImGuiCol_ButtonHovered] = Цвет,при наведении на кнопку.
    [ImGuiCol_ButtonActive] = Используемый цвет кнопки.
    [ImGuiCol_Header] = Цвет для ImGui::CollapsingHeader.
    [ImGuiCol_HeaderHovered] = Цвет,при наведении на ImGui::CollapsingHeader.
    [ImGuiCol_HeaderActive] = Используемый цвет ImGui::CollapsingHeader.
    [ImGuiCol_Column] = Цвет для "полоски отделения" ImGui::Column и ImGui::NextColumn.
    [ImGuiCol_ColumnHovered] = Цвет,при наведении на "полоску отделения" ImGui::Column и ImGui::NextColumn.
    [ImGuiCol_ColumnActive] = Используемый цвет для "полоски отделения" ImGui::Column и ImGui::NextColumn.
    [ImGuiCol_ResizeGrip] = Цвет для "треугольника" в правом нижнем углу,который используется для увеличения или уменьшения размеров меню.
    [ImGuiCol_ResizeGripHovered] = Цвет,при наведении на "треугольника" в правом нижнем углу,который используется для увеличения или уменьшения размеров меню.
    [ImGuiCol_ResizeGripActive] = Используемый цвет для "треугольника" в правом нижнем углу,который используется для увеличения или уменьшения размеров меню.
    [ImGuiCol_CloseButton] = Цвет для кнопки-закрытия меню.
    [ImGuiCol_CloseButtonHovered] = Цвет,при наведении на кнопку-закрытия меню.
    [ImGuiCol_CloseButtonActive] = Используемый цвет для кнопки-закрытия меню.
    <-------------------------------------------------------------------------------------------------------------->
    Данные параметры для меня не известны,т.к не использую их на деле.

    [ImGuiCol_PlotLines] =
    [ImGuiCol_PlotLinesHovered] =
    [ImGuiCol_PlotHistogram] =
    [ImGuiCol_PlotHistogramHovered] =
    <-------------------------------------------------------------------------------------------------------------->
    [ImGuiCol_TextSelectedBg] = Цвет выбранного текста,в ImGui::MenuBar.
    [ImGuiCol_ModalWindowDarkening] = Цвет "Затемнения окна" вашего меню.

    Редко вижу данные обозначения,но все таки решил их сюда поместить.
    [ImGuiCol_Tab] = Цвет для табов в меню.
    [ImGuiCol_TabActive] = Активный цвет табов,т.е при нажатии на таб у вас
    будет этот цвет.
    [ImGuiCol_TabHovered] = Цвет,который будет отображаться при наведении на таб.
    [ImGuiCol_TabSelected] = Цвет,при котором,используется тогда,когда вы будете находится в одном из табов.
    [ImGuiCol_TabText] = Цвет текста,который распространяется только на табы.
    [ImGuiCol_TabTextActive] = Активный цвет текста для табов.
    2 Часть уже почти готов, если людям понравиться - выпущу
     
  2. onechance
    onechance Aug 7, 2022 i luv u guest <3 1067 Jun 6, 2022
    копипаст
     
  3. shadrmax111
    Спасибо большое очень полезно, жду вторую часть.
     
Top
Loading...