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

Лабораторная работа №4

Задание:

1. Создать проект, состоящий из одной формы.

2. Нанести на форму главное меню, состоящее из пунктов Кривая, Замкнутая кривая, Многоугольник, Очистить все, Выбрать цвет.

3. Написать программу, позволяющую пользователю наносить на форму любое количество точек мышью. Цвет точек значения не имеет.

4. С помощью первых трех пунктов меню обеспечить возможность пользователю рисования по этим точкам кривой, замкнутой кривой и многоугольника соответственно.

5. Нанести на форму два элемента типа «ComboBox». Снабдить их надписями: «Выберите жесткость» и «Выберите толщину линии». Обеспечить с помощью первого элемента выбор пользователем жесткости кривой, с помощью второго элемента – выбор пользователем толщины линии в пикселях.

6. С помощью пункта меню «Выбрать цвет» обеспечить возможность пользователю выбор цвета для кривых и многоугольников.

7. С помощью пункта меню «Очистить все» обеспечить возможность очистки формы от всех нарисованных в данный момент элементов.

8. Обеспечить возможность пользователю изменения размеров формы. При этом должны перерисовываться только те графические элементы, которые нанесены на форму в данный конкретный момент времени.

Текст программы:

Главная форма проекта:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

namespace Компьютерная_графика__4

{

public partial class Form1 : Form

{

Graphics g;

Pen p;

Point[] point;

int num_p;

int x = 4;

float y = 1;

Color dc = Color.FromArgb(0, 0, 0);

bool k = false, zk = false, m = false;

private void криваяToolStripMenuItem_Click(object sender, EventArgs e)

{

Point[] po = point;

if (num_p > 1)

{

g.DrawCurve(p, po, y);

}

else

{

}

k = true;

}

private void замкнутаяКриваяToolStripMenuItem_Click(object sender, EventArgs e)

{

Point[] po = point;

if (num_p > 2)

{

g.DrawClosedCurve(p, po);

}

else

{

}

zk = true;

}

private void многоугольникToolStripMenuItem_Click(object sender, EventArgs e)

{

Point[] po = point;

if (num_p > 2)

{

g.DrawPolygon(p, po);

}

m = true;

}

private void очиститьВсёToolStripMenuItem_Click(object sender, EventArgs e)

{

g.Clear(BackColor);

point = null;

num_p = 0;

k = false;

zk = false;

m = false;

}

private void красныйToolStripMenuItem_Click(object sender, EventArgs e)

{

dc = Color.FromArgb(255, 0, 0);

p = new Pen(dc, x);

}

private void зелёныйToolStripMenuItem_Click(object sender, EventArgs e)

{

dc = Color.FromArgb(0, 255, 0);

p = new Pen(dc, x);

}

private void синийToolStripMenuItem_Click(object sender, EventArgs e)

{

dc = Color.FromArgb(0, 0, 255);

p = new Pen(dc, x);

}

private void чёрныйToolStripMenuItem_Click(object sender, EventArgs e)

{

dc = Color.FromArgb(0, 0, 0);

p = new Pen(dc, x);

}

private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

y = (float)(float.Parse(comboBox1.Text));

}

private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)

{

x = Convert.ToInt32(comboBox2.Text);

p = new Pen(dc, x);

}

private void Form1_SizeChanged(object sender, EventArgs e)

{

Point[] po = point;

if (k)

{

if (num_p > 1)

{

g.DrawCurve(p, po, y);

}

else

{

}

}

if (zk)

{

if (num_p > 2)

{

g.DrawClosedCurve(p, po);

}

else

{

}

}

if (m)

{

if (num_p > 2)

{

g.DrawPolygon(p, po);

}

else

{

}

}

}

private void Form1_MouseClick(object sender, MouseEventArgs e)

{

if (e.Button == MouseButtons.Left)

{

Rectangle r = new Rectangle(e.X, e.Y, 1, 1);

Point mp = new Point(e.X, e.Y);

g.DrawEllipse(p, r);

num_p += 1;

Array.Resize(ref point, num_p);

point[num_p - 1] = mp;

}

}

public Form1()

{

InitializeComponent();

g = this.CreateGraphics();

p = new Pen(dc, x);

}

}

}

Контрольный пример:

Образец главной формы проекта:

Результат работы пункта меню Кривая:

Результат работы пункта меню Замкнутая кривая:

Результат работы пункта меню Многоугольник: