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


using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApp15
{
    public partial class Form1 : Form
    {
        // Поля класса должны быть здесь (на одном уровне с конструктором)
        private Color houseColor = Color.Beige;
        private Random _rnd = new Random();

        public Form1()
        {
            InitializeComponent();

            // Настройка формы
            this.Text = "Практическая работа: Graphics";
            this.Size = new Size(800, 600);
            this.BackColor = Color.White;
            this.SetStyle(ControlStyles.ResizeRedraw, true);

            // Подключение обработчика события Paint
            this.Paint += Form1_Paint;
        }

        // Обработчик события Paint должен быть отдельным методом
        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            // --- Задание 2. Базовые фигуры ---
            // 1. Линия
            e.Graphics.DrawLine(Pens.Black, 20, 20, 300, 20);

            // 2. Прямоугольник (синее перо толщиной 3)
            using (Pen bluePen = new Pen(Color.Blue, 3))
            {
                e.Graphics.DrawRectangle(bluePen, 20, 40, 200, 100);
            }

            // 3. Эллипс (красное перо толщиной 2)
            using (Pen redPen = new Pen(Color.Red, 2))
            {
                e.Graphics.DrawEllipse(redPen, 20, 160, 200, 100);
            }

            // 4. Квадрат (зеленое перо по умолчанию)
            e.Graphics.DrawRectangle(Pens.Green, 260, 160, 80, 80);

            // --- Задание 3. Заливка фигур ---
            // 1. Залитый прямоугольник
            e.Graphics.FillRectangle(Brushes.Orange, 20, 300, 150, 80);

            // 2. Залитый эллипс
            e.Graphics.FillEllipse(Brushes.LightBlue, 200, 300, 150, 80);

            // 3. Залитый эллипс с контуром
            e.Graphics.FillEllipse(Brushes.Yellow, 400, 300, 150, 80);
            e.Graphics.DrawEllipse(Pens.Black, 400, 300, 150, 80);

            // 4. Свой цвет через SolidBrush
            using (Brush customBrush = new SolidBrush(Color.FromArgb(100, 255, 100, 0)))
            {
                e.Graphics.FillRectangle(customBrush, 600, 300, 150, 80);
            }

            // --- Задание 4. Дуги и многоугольники ---
            // 1. Полуокружность
            e.Graphics.DrawArc(Pens.Purple, 20, 420, 200, 100, 0, 180);

            // 2. Дуга 45-270 градусов
            e.Graphics.DrawArc(Pens.Purple, 230, 420, 200, 100, 45, 270);

            // 3. Треугольник (контур)
            Point[] trianglePoints = { new Point(20, 540), new Point(120, 540), new Point(70, 460) };
            e.Graphics.DrawPolygon(Pens.Brown, trianglePoints);

            // 4. Залитый пятиугольник с обводкой
            Point[] pentagonPoints = {
                new Point(200, 540), new Point(280, 540),
                new Point(320, 480), new Point(240, 440),
                new Point(160, 480)
            };
            using (Brush greenBrush = new SolidBrush(Color.ForestGreen))
            {
                e.Graphics.FillPolygon(greenBrush, pentagonPoints);
            }
            e.Graphics.DrawPolygon(Pens.DarkGreen, pentagonPoints);

            // --- Задание 5. Композиция «Домик» ---
            // Трава
            e.Graphics.FillRectangle(Brushes.LightGreen, 0, 450, 800, 150);

            // Корпус дома (используем переменную houseColor)
            e.Graphics.FillRectangle(new SolidBrush(houseColor), 250, 250, 300, 200);

            // Крыша (треугольник)
            Point[] roofPoints = {
                new Point(250, 250), new Point(550, 250), new Point(400, 150)
            };
            e.Graphics.FillPolygon(Brushes.SaddleBrown, roofPoints);

            // Дверь
            e.Graphics.FillRectangle(Brushes.Brown, 350, 350, 50, 100);

            // Окно
            e.Graphics.FillRectangle(Brushes.LightBlue, 450, 300, 60, 60);

            // Солнце
            e.Graphics.FillEllipse(Brushes.Yellow, 600, 50, 80, 80);

            // Рамка окна
            e.Graphics.DrawRectangle(Pens.Black, 450, 300, 60, 60);
        }

        // --- Задание 6. Интерактивность ---
        private void btnRedraw_Click(object sender, EventArgs e)
        {
            // Генерируем случайный цвет (избегаем слишком темных)
            houseColor = Color.FromArgb(255, _rnd.Next(100, 256), _rnd.Next(100, 256), _rnd.Next(100, 256));

            // Запрашиваем перерисовку формы
            this.Invalidate();
        }
    }
}