Загрузка данных


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());
        }
    }
}