Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pechat_33__33-4.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
381.05 Кб
Скачать

Результат роботи програми:

Рис. 8. Форма вводу даних

Рис. 9. Програма перевіряє виконання вказаних функцій.

Задача 10

Мовою C# розробити діалогову програму з графічним інтерфейсом:

    1. Створити базовий клас «квадрат», що відображається у вікні форми.

    2. Створити діалогову форму з трьома кнопками.

    3. Натискання першої кнопки в перший раз створює новий об'єкт «квадрат» з центром у середині вікна і з периметром 4 см. Кожне наступне натискання створює новий квадрат з центром у середині вікна і з периметром у 1,2 рази більше попереднього. Перший квадрат від початку вважається обраним і зображується червоним кольором, наступні - синім.

    4. Натискання другої кнопки дозволяє обрати наступний квадрат. Він стає червоним, а попередній, відповідно, синім.

    5. Натискання третьої кнопки видаляє обраний квадрат з пам'яті і стирає його зображення з екрану. При цьому наступний за ним квадрат стає обраним.

Перевірити роботу складеної програми.

Код програми

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Windows.Forms;

namespace Num_5

{

public partial class Form1 : Form

{

private readonly Graphics _graphics;

private const int CenterX = 250;

private const int CenterY = 250;

private List<Square> _squares = new List<Square>();

public Form1()

{

InitializeComponent();

FormBorderStyle = FormBorderStyle.FixedSingle;

_graphics = CreateGraphics();

_graphics.Clear(Color.White);

}

private void AddSquare()

{

if (_squares.Count == 15 || _squares.Any(x => x.W >= 490)) return;

Square sq;

if (_squares.Any())

{

var max = _squares.OrderByDescending(x => x.W).First().W;

sq = new Square(max) {IsSelected = false};

}

else sq = new Square {IsSelected = true};

_squares.Add(sq);

Draw(sq);

_squares = _squares.OrderByDescending(x => x.W).ToList();

}

private void Draw(Square sq)

{

var rectangle = new Rectangle(sq.X, sq.Y, sq.W, sq.W);

_graphics.DrawRectangle(sq.IsSelected ? Pens.Red : Pens.Blue, rectangle);

}

private void Select(bool isPrev = false)

{

_squares = _squares.OrderByDescending(x => x.W).ToList();

var selectedIndex = _squares.IndexOf(_squares.First(x => x.IsSelected));

if ((isPrev && selectedIndex == _squares.Count - 1) || (!isPrev && selectedIndex == 0)) return;

_squares.First(x => x.IsSelected).IsSelected = false;

var nextIndex = isPrev ? selectedIndex + 1 : selectedIndex - 1;

_squares.ElementAt(nextIndex).IsSelected = true;

_graphics.Clear(Color.White);

foreach (var sq in _squares)

{

Draw(sq);

}

}

private void button1_Click(object sender, EventArgs e)

{

AddSquare();

}

private void button2_Click(object sender, EventArgs e)

{

if (!_squares.Any()) return;

var selected = _squares.First(x => x.IsSelected);

var selectedIndex = _squares.IndexOf(_squares.First(x => x.IsSelected));

var nextIndex = selectedIndex == 0 ? 0 : selectedIndex - 1;

_squares.Remove(selected);

_squares.ElementAt(nextIndex).IsSelected = true;

_graphics.Clear(Color.White);

foreach (var sq in _squares)

{

Draw(sq);

}

}

private void button3_Click(object sender, EventArgs e)

{

Select();

}

private void button4_Click(object sender, EventArgs e)

{

Select(true);

}

public class Square

{

public Square(int? w = null)

{

W = (int)(w.HasValue ? 1.2 * w.Value : 40.0);

}

public int W { get; set; }

public int X

{

get { return (int)(CenterX - (W / 2.0)); }

}

public int Y

{

get { return (int)(CenterY - (W / 2.0)); }

}

public bool IsSelected { get; set; }

}

}

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]