Работаю с WinForm C# и возник такой вопрос: можно ли сделать что бы кнопки в программе плавно меняли цвета по порядку как радуга? Просто открываю программу и кнопки начинают с красного цвета плавно переходить в оранжевый, потом желтый и т.д.? Такое возможно сделать в WinForm? Если да, то как?
Ответ
Сделал, плавно меняет цвет на рандомный, вот пример того что получилось:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
timer1.Interval = 20;
timer1.Enabled = true;
}
float step = 0;
Color currentColor = Color.DarkGreen;
Color targetColor = Color.LightBlue;
Random rnd = new Random();
private void timer1_Tick(object sender, EventArgs e)
{
if (step >= 1f)
{
step = 0;
int R = rnd.Next(0, 255);
int G = rnd.Next(0, 255);
int B = rnd.Next(0, 255);
currentColor = targetColor;
targetColor = Color.FromArgb(R, G, B);
}
int mixR = (int)(currentColor.R * (1f - step) + targetColor.R * step);
int mixG = (int)(currentColor.G * (1f - step) + targetColor.G * step);
int mixB = (int)(currentColor.B * (1f - step) + targetColor.B * step);
this.BackColor = Color.FromArgb(mixR, mixG, mixB);
step += 0.03f;
}
}
Комментариев нет:
Отправить комментарий