Лабораторная работа №5 С#
Оценка 4.6

Лабораторная работа №5 С#

Оценка 4.6
Лабораторные работы
docx
информатика
Взрослым
04.04.2018
Лабораторная работа №5 С#
На данный момент мы имеем набор классов фигур, которые имеют возможность «рисоваться» на заданном полотне. Данные классы, могут существовать не зависимо друг от друга, что, не смотря на схожесть структур, может привести к проблемам и усложнению кода при попытке рисования сложных составных объектов. Для облегчения процедуры использования данных классов, а также с целью сокращения кода, разработаем класс, который будет отвечать за область рисования, назовем его painter. Данный класс будет хранить в себе список объектов для рисования, так же набор вспомогательных методов для работы с данным списком.
Лабораторная работа№5.docx
Лабораторная работа №5. На данный момент мы имеем набор классов фигур, которые имеют возможность «рисоваться» на заданном полотне. Данные классы, могут существовать не зависимо друг от друга, что, не смотря на схожесть структур, может привести к проблемам и усложнению кода при попытке рисования сложных составных объектов. Для облегчения процедуры использования данных классов, а также с целью сокращения кода, разработаем класс, который будет отвечать за область рисования, назовем его painter. Данный класс будет хранить в себе список объектов для рисования, так же набор вспомогательных методов для работы с данным списком. using System; using System.Drawing; using System.Windows.Forms; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace WindowsFormsApplication1 { class Painter:PictureBox { private List figures = new List(); private Graphics g; public int gridsise { get; set; } private void init() { this.gridsise = 0; this.Image = new Bitmap(this.Width, this.Height); this.g = Graphics.FromImage(this.Image); } protected override void OnSizeChanged(EventArgs e) { base.OnSizeChanged(e); init(); draw(); } public Painter() { init(); } public void add(basefigure F) { this.figures.Add(F); } public void clear() { g.Clear(Color.Transparent); } public void draw() { clear(); grid(); foreach (basefigure F in this.figures) { F.draw(g); } } public void grid() { if (this.gridsise == 0) { return; } for (int i = this.gridsise; i < this.Height; i += this.gridsise) { g.DrawLine(Pens.Gray, 0, i, this.Width, i); } for (int i = this.gridsise; i < this.Width; i += this.gridsise) { g.DrawLine(Pens.Gray, i, 0, i, this.Height); } } public void oxy (Point P,int stepx, int stepy) { g.DrawLine(new Pen(Brushes.Black, 2), P.x, 0, P.x, this.Height); g.DrawLine(new Pen(Brushes.Black, 2), 0, P.y, this.Width, P.y); for (int i =P.y+stepy; i < this.Height; i += stepy) { g.DrawLine(Pens.Black, P.x-3, i, P.x+2, i); } for (int i = P.y - stepy; i >= 0; i -= stepy) { g.DrawLine(Pens.Black, P.x - 3, i, P.x+2, i); } for (int i = P.x+stepx; i < this.Width; i +=stepx) { g.DrawLine(Pens.Black, i, P.y-3, i, P.y+2); } for (int i = P.x - stepx; i >= 0; i -= stepx) { g.DrawLine(Pens.Black, i, P.y - 3, i, P.y + 2); } } } } Данный класс унаследован от picturebox, тем самом он будет повторять данный класс с возможностью расширения его дополнительным функционалом. Функция add служит для добавления фигуры в список для рисования. Данный метод именно добавляет фигуру в список не отрисовывая ее. В качестве аргумента функция принимает тип basefigure, что позволяет добавлять нам любой из реализованных ранее классов (так как они все являются наследниками данного класса). Метод draw служит для отрисовки всех элементов из списка на форме. Метод grid служит для отрисовки фоновой сетки Метод oxy служит для отрисовки осей x и y. Метод clear служит для очистки рабочей области. Свойство gridsize будет обозначать размер сетки в пикселях Так ка созданный класс наследуется от picturebox он в свою очередь наследуется от класса control, то класс painter так же является элементом управления формы, а значит его можно найти в панели элементов управления визуального редактора Visual Studio (Если элемент в данной панели не отобразился, то нужно сохранить проект и пере открыть его). Удалим с формы элемент picturebox, созданный в предыдущей работе и добавим элементы управления painter, выставив свойство dock=fill, отобразим на форме реализованные классы фигур с помощью класса painter. Задача: 1.Реализовать возможность задавать цвет фигуры при ее добавлении в список объектов класса painter. 2.Реализовать возможность задавать цвет фона рабочей области. 3.Добавить и реализовать свойство «цвет заливки» для реализованных фигур. (по умолчанию считать, что цвет заливки прозрачный)

Лабораторная работа №5 С#

Лабораторная работа №5 С#

Лабораторная работа №5 С#

Лабораторная работа №5 С#

Лабораторная работа №5 С#

Лабораторная работа №5 С#
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
04.04.2018