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


using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace zxcqwezxc
{
    public partial class Form1 : Form
    {
        // Список для хранения всех прямоугольников и их цветов
        private List<(Rectangle rect, Color color)> rectangles;

        public Form1()
        {
            InitializeComponent();
            // Создаём пустой список
            rectangles = new List<(Rectangle, Color)>();
            // Подключаем обработчики событий загрузки и перерисовки
            this.Load += Form1_Load;
            this.Paint += Form1_Paint;
        }

        // Срабатывает один раз при первом появлении окна
        private void Form1_Load(object sender, EventArgs e)
        {
            // Генерируем 50 случайных прямоугольников с учётом
            // ТЕКУЩИХ размеров клиентской области окна
            GenerateRectangles();
        }

        // Генерация прямоугольников и запись их в список
        private void GenerateRectangles()
        {
            // Очищаем список на всякий случай (хотя вызывается один раз)
            rectangles.Clear();

            // Генератор случайных чисел
            Random rnd = new Random();

            // Размеры рабочей области окна на момент загрузки
            int clientW = this.ClientSize.Width;
            int clientH = this.ClientSize.Height;

            // Цикл на 50 прямоугольников
            for (int i = 0; i < 50; i++)
            {
                // Случайная ширина от 10 до 100
                int width = rnd.Next(10, 101);
                // Случайная высота от 10 до 100
                int height = rnd.Next(10, 101);

                // Координата X: от 0 до (ширина_окна - ширина_прямоугольника),
                // чтобы он поместился по горизонтали
                int x = rnd.Next(0, Math.Max(0, clientW - width) + 1);
                // Аналогично по вертикали
                int y = rnd.Next(0, Math.Max(0, clientH - height) + 1);

                // Случайный цвет: красный, зелёный, синий – от 0 до 255
                Color color = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));

                // Добавляем прямоугольник и его цвет в список
                rectangles.Add((new Rectangle(x, y, width, height), color));
            }
        }

        // Рисование всех ранее сохранённых прямоугольников
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            // Получаем поверхность для рисования
            Graphics g = e.Graphics;

            // Перебираем каждый сохранённый прямоугольник
            foreach (var (rect, color) in rectangles)
            {
                // Создаём кисть нужного цвета, using автоматически освободит её ресурсы
                using (SolidBrush brush = new SolidBrush(color))
                {
                    // Закрашиваем прямоугольник
                    g.FillRectangle(brush, rect);
                }
            }
        }
    }
}