using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace winf_circles
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
Pen blackPen = new Pen(Color.Black, 3);
//Заполнение списка цветов случайными цветами
List<Color> colors = new List<Color>();
for(int i = 0; i < 7; i++)
{
Thread.Sleep(1);
colors.Add(get_random_color());
}
// Смена цветов
while (true)
{
// Отрисовка цветных кругов кругов
RectangleF rect = new RectangleF(275.0f, 90.0f, 210.0f, 210.0f);
for (int i = 0; i < 7; i++) {
Brush brush = new SolidBrush(colors[i]);
g.FillEllipse(brush, rect);
rect = update_rect_down(rect);
}
// Отрисовка контуров
for (int i = 0; i < 8; i++) {
g.DrawEllipse(blackPen, rect);
rect = update_rect_up(rect);
}
update_color(colors);
Thread.Sleep(1000);
}
}
// Генератор случайных цветов
private Color get_random_color()
{
Random rnd = new Random();
return Color.FromArgb(255, rnd.Next(100, 256), rnd.Next(0, 51), rnd.Next(150,256));
}
// Движение на круг вверх
private RectangleF update_rect_up(RectangleF rect)
{
rect.Width += 30;
rect.Height += 30;
rect.X -= 15;
rect.Y -= 15;
return rect;
}
// Движение на круг вниз
private RectangleF update_rect_down(RectangleF rect)
{
rect.Width -= 30;
rect.Height -= 30;
rect.X += 15;
rect.Y += 15;
return rect;
}
private void update_color(List<Color> colors)
{
colors.RemoveAt(0);
colors.Add(get_random_color());
}
}
}