Форум — Ответы     (  К темам )
 ?  Игорь: В продолжение смены цветов радуги... (14-05-2003 15:57:26)
Когда-то ранее я пытался сделать плавную смену цвета, например, Label'a.
Т.е. не дискретная смена цветов, а плавный переход между цветами через промежуточные оттенки. Игрался с комбинацией констант R G B.
Может у кого-то есть готовый алгоритм плавного циклического цветового перехода по цветам радуги...
 Павел (14-05-2003 17:32:56)
Как я уже говорил:

красный — оранжевый — желтый — зеленый — голубой — синий — фиолетовый — красный

//---------------------------------------------------------------------------
// таймер установил в 1/10 сек, измените скорость как вам надо
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
static int r=255, g=0, b=0; // начинаем с красного

if(b==0 && g < 255) g++; // красный-желтый
if(g == 255 && r != 0) r--; // желтый-зеленый
if(r == 0 && g == 255 && b != 255) b++; // зеленый-голубой
if(r == 0 && b == 255 && g != 0) g--; // голубой-синий
if(b == 255 && g == 0 && r != 255) r++; // синий-фиолетовый
if(g == 0 && r == 255 && b != 0) b--; // фиолетовый-красный

Tc = RGB(r,g,b);

Label1->Color = Tc;

Label2->Caption = r;
Label3->Caption = g;
Label4->Caption = b;
}
//---------------------------------------------------------------------------

Label2,3,4 — если захотите разобраться как происходит смена цветов
 Павел (14-05-2003 17:38:19)
Да, забыл,
переменная Tc описана как
private: // User declarations
TColor Tc;
 Георгий (14-05-2003 18:19:37)
попробовал — прикольно
 Игорь (14-05-2003 19:19:27)
Спасибо, Павел!