Загрузка данных
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();
}
}
}