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();
this.DoubleBuffered = true;
rectangles = new List<(Rectangle rect, Color color)>();
this.Load += Form1_Load;
this.Paint += Form1_Paint;
}
private void Form1_Load(object sender, EventArgs e)
{
GenerateRectangles();
}
private void GenerateRectangles()
{
Random rnd = new Random();
rectangles.Clear();
int clientWidth = this.ClientSize.Width;
int clientHeight = this.ClientSize.Height;
for (int i = 0; i < 50; i++)
{
// Случайные размеры: от 10 до 100 пикселей (или в зависимости от размера окна)
int width = rnd.Next(10, Math.Min(100, clientWidth));
int height = rnd.Next(10, Math.Min(100, clientHeight));
int x = rnd.Next(0, Math.Max(0, clientWidth - width));
int y = rnd.Next(0, Math.Max(0, clientHeight - height));
Rectangle rect = new Rectangle(x, y, width, height);
Color color = Color.FromArgb(rnd.Next(256), rnd.Next(256), rnd.Next(256));
rectangles.Add((rect, color));
}
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
foreach (var (rect, color) in rectangles)
{
using (SolidBrush brush = new SolidBrush(color))
{
g.FillRectangle(brush, rect);
}
}
}
// При изменении размеров формы перегенерируем прямоугольники?
// Или оставить статичными, но при изменении размера может стать видна только часть.
// По заданию лучше, чтобы при запуске отрисовывались, а при ресайзе не пропадали.
// Лучше подписаться на Resize и перегенерировать, чтобы заполнить всё окно.
// Добавим:
private void Form1_Resize(object sender, EventArgs e)
{
GenerateRectangles();
this.Invalidate(); // Перерисовать
}
}
}