Как сделать RGB ImGui Border/ImVec4?

wqerqwjep

Новорег
Сообщения
2
Реакции
0
Добрый день, извиняюсь, если не так назвал заголок. Есть Border ImGui, нужно сделать что бы он переливался в RGB-Цветах, какие есть варианты такое осуществить?
 

ratmorra

Onion
Модератор
Сообщения
406
Реакции
396
Привет, пробуй.

Код:
ImVec4 startColor = ImVec4(1.0f, 0.0f, 0.0f, 1.0f); // Начальный цвет (красный)
ImVec4 endColor = ImVec4(0.0f, 1.0f, 0.0f, 1.0f); // Конечный цвет (зеленый)
float animDuration = 1.0f; // Длительность анимации (в секундах)

float t = fmodf(ImGui::GetTime(), animDuration) / animDuration; // Вычисляем прошедшее время в пределах длительности анимации
ImVec4 currentColor = ImVec4(
    startColor.x + (endColor.x - startColor.x) * t, // Красный цвет
    startColor.y + (endColor.y - startColor.y) * t, // Зеленый цвет
    startColor.z + (endColor.z - startColor.z) * t, // Синий цвет
    1.0f // Альфа-канал
);

ImGui::PushStyleColor(ImGuiCol_Border, currentColor); // Устанавливаем текущий цвет границы
ImGui::Begin("Animated Border"); // Создаем окно с анимированной границей
// Ваш код отображения элементов в окне
ImGui::End();
ImGui::PopStyleColor(); // Сбрасываем цвет границы
 

wqerqwjep

Новорег
Сообщения
2
Реакции
0
Привет, пробуй.

Код:
ImVec4 startColor = ImVec4(1.0f, 0.0f, 0.0f, 1.0f); // Начальный цвет (красный)
ImVec4 endColor = ImVec4(0.0f, 1.0f, 0.0f, 1.0f); // Конечный цвет (зеленый)
float animDuration = 1.0f; // Длительность анимации (в секундах)

float t = fmodf(ImGui::GetTime(), animDuration) / animDuration; // Вычисляем прошедшее время в пределах длительности анимации
ImVec4 currentColor = ImVec4(
    startColor.x + (endColor.x - startColor.x) * t, // Красный цвет
    startColor.y + (endColor.y - startColor.y) * t, // Зеленый цвет
    startColor.z + (endColor.z - startColor.z) * t, // Синий цвет
    1.0f // Альфа-канал
);

ImGui::PushStyleColor(ImGuiCol_Border, currentColor); // Устанавливаем текущий цвет границы
ImGui::Begin("Animated Border"); // Создаем окно с анимированной границей
// Ваш код отображения элементов в окне
ImGui::End();
ImGui::PopStyleColor(); // Сбрасываем цвет границы
Спасибо, помог
 
Верх Низ