Как сделать так чтобы Форма меняла плавно цвет? Delphi
Я делаю скринсейвер на делфи, я нашел код изменения цвета формы, сделал, но цвет переключается не плавно! Как сделать так чтобы цвет переключался плавно?
Я делаю скринсейвер на делфи, я нашел код изменения цвета формы, сделал, но цвет переключается не плавно! Как сделать так чтобы цвет переключался плавно?
Цвет можно задавать числом, само число передавать через переменную, меняя. попробуй вместо ..color:=тут впиши число;
С помощью ColorToRgb получаешь
Начальный_цвет = ColorToRgb(Form1.color)
Смещением получаешь значения цветов:
byte Красный = Начальный_цвет
byte Зеленый = Начальный_цвет shr 8
byte Синий = Начальный_цвет shr 16
Отнимаешь начальный цвет от конечного, делишь на количество проходов, записываешь в ИНТОВУЮ переменную по цветам (byte не может отрицательные значения принимать)
Создаешь таймер (или еще как) , в котором будут прибавляться полученные переменная к байтам цвета (2 условия не забудь такого типа: if Красный+шаг_Красного>255 Красный=255 и if Красный+шаг_Красного<0 Красный=0 )
Ну и заканчиваешь так Form1.color = rgb(Красный, Зеленый, Синий)
Всё.
З. Ы.
Хотя что там, можно сразу в инты записать так:
int red := start_color shr 16; //RRGGBB 16>> 0000RR
int green := (start_color shl shr 16; //RRGGBB 8<< GGBB00 16>> 0000GG
int blue := (start_color shl 16) shr 16; //RRGGBB 16<< BB0000 16>> 0000BB