• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Исходник ImGui - Изменение темы в меню.

bluedream.ltd
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,063
Реакции
1,288
Сегодня научу вас делать возможность изменения темы в вашем ImGui меню.
Создаем массив, статическую переменную типа int, а также комбо элемент:

C++:
Expand Collapse Copy
const char* themes[]{ "Dark Purple", "Dark Blue" };
static int curTheme;
ImGui::Combo(xorstr("Menu Theme"), &curTheme, themes, ARRAYSIZE(themes));

Дальше реализуем такой код:

C++:
Expand Collapse Copy
if (curTheme == 0)
            {
                colors[ImGuiCol_WindowBg] = ImVec4(0.39f, 0.00f, 0.63f, 0.11f);
            }
            else if (curTheme == 1)
            {
                colors[ImGuiCol_WindowBg] = ImVec4(0.11f, 0.15f, 0.17f, 1.00f);
            }

Там где я задавал цвет WindowBg вы задаете цвет всем остальным элементам, важно задать переменной curTheme изначальное значение 0.
Результат:
1617814670202.png

1617814675604.png
 
Сегодня научу вас делать возможность изменения темы в вашем ImGui меню.
Создаем массив, статическую переменную типа int, а также комбо элемент:

C++:
Expand Collapse Copy
const char* themes[]{ "Dark Purple", "Dark Blue" };
static int curTheme;
ImGui::Combo(xorstr("Menu Theme"), &curTheme, themes, ARRAYSIZE(themes));

Дальше реализуем такой код:

C++:
Expand Collapse Copy
if (curTheme == 0)
            {
                colors[ImGuiCol_WindowBg] = ImVec4(0.39f, 0.00f, 0.63f, 0.11f);
            }
            else if (curTheme == 1)
            {
                colors[ImGuiCol_WindowBg] = ImVec4(0.11f, 0.15f, 0.17f, 1.00f);
            }

Там где я задавал цвет WindowBg вы задаете цвет всем остальным элементам, важно задать переменной curTheme изначальное значение 0.
Результат:
Посмотреть вложение 142626
Посмотреть вложение 142627
но можно же сделать через switch и так
C++:
Expand Collapse Copy
switch (theme) {
    case 0: StyleColorsDark();   break;
    case 1: StyleColorsLight();   break;
}
 
но можно же сделать через switch и так
C++:
Expand Collapse Copy
switch (tabs) {
    case 0: StyleColorsDark();   break;
    case 1: StyleColorsLight();   break;
}
в 2021 году использовать switch :CoolCat:
но можно же сделать через switch и так
C++:
Expand Collapse Copy
switch (theme) {
    case 0: StyleColorsDark();   break;
    case 1: StyleColorsLight();   break;
}
1617815078472.png
 
C++:
Expand Collapse Copy
if(1 == choosing) {
    goto mark1;
}
if(2 == choosing) {
    goto mark2;
}
{
    mark1:
    // case 1
    goto ending;
    mark2:
    // case 2
    goto ending;
}
ending:;
Оператор switch преобразуется примерно в это. Если немного вникнуть в подробности, то можно понять, что goto в данном контексте не несет дополнительной нагрузки компилятору в плане оптимизации.
Использовать switch можно, а иногда и нужно. Я хотел бы посмотреть, как вы пишете 20 if-else для обработки значения того же enum'а
 
Назад
Сверху Снизу