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