Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ванеев О.Н. МУ к ЛР2 по ТИПИС.doc
Скачиваний:
0
Добавлен:
21.08.2019
Размер:
86.53 Кб
Скачать

3 Порядок выполнения работы

Данная лабораторная работа предполагает выполнение следующих этапов:

1. Изучить методические указания к лабораторной работе

2. Пройти собеседование с преподавателем и получить задание для выполнения работы

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

4. Изменить обработчик вспомогательной кнопки, чтобы при нажатии кнопки менялось положение объекта

5. Связать с событием меток, отображающим объект метод, меняющий координаты объекта ( увеличивающий на 0.01 от максимального значения)

6. Оформить и защитить отчет по лабораторной работе

4 Варианты задания

Заданием на лабораторную работу является создание модели объекта системы при заданных размерах исходного объекта и ее отображаемого образа на форме с использованием свойств классов. Кроме того, объект должен менять свое положение при выполнении какого либо события.

Исходными данными для выполнения работы является размеры предметной области и точка отсчета координат.

Таблица 4.1

Варианты задания

Вариант

Max X

Max Y

Точка отсчета

1

100м

100м

Центр области

2

1000м

1000м

Левый нижний угол

3

700м

700м

Лев нижний угол

4

500м

500м

Левый нижний угол

5

3000м

3000м

Левый нижний угол

6

1мм

1мм

Центр области

7

0.1мм

0.1мм

Левый нижний угол

8

0.01мм

0.01мм

Левый нижний угол

5 Содержание и форма отчета

Отчетом по данной работе валяется проект приложения выполненный в программной среде.

При разработке приложения должны бать выполнены следующие требования:

1) имя проекта и модуля должно отображать содержание задания;

2) проект должен быть сохранен в рабочей директории студента;

3) программный модуль должен содержать подробные комментарии в частности, должны быть отмечены элементы класса, соответствующие основным элементам объекта (атрибутам, действиям, событиям);

4) должны быть прокомментированы действия, выполняемые в конструкторе;

5) должны быть прокомментированы все методы и и процессы в них отображаемые.

6 Пример выполнения работы

Для выполнения работы был использован класс MyLabel, созданный в лабораторной работе № 1, который дополнили двумя свойствами:

CorX – положение объекта относительно левого края формы;

CorY –положение объекта относительно верхнего края формы.

Поскольку величина, на которую нужно изменить положение объекта задается в реальной системе, причем maxX = maxY = 300, то нужно учесть масштаб. Для этого вводится специальный масштабный коэффициент koef.

Листинг свойств:

public double CorX

{

set

{

// коэф. если объект будет перемещаться вправо

double koefP = (double)(label_Telo.Parent.ClientRectangle.Width/2-label_Telo.Width-label_Golova.Width) / 300.0;

// коэф. если объект будет перемещаться влево

double koefM = (double)(label_Telo.Parent.ClientRectangle.Width / 2) / 300.0;

X = value;

// в зависимости куда перемещается объект выбираем соответствующий коэф.

if (X > 0)

label_Telo.Left = bx + (int)(X * koefP);

else

label_Telo.Left = bx + (int)(X * koefM);

// перемещаем объект

label_Golova.Left = label_Telo.Left + label_Telo.Width;

label_noga1.Left = label_Telo.Left + 5;

label_noga2.Left = label_Telo.Left - label_noga2.Width + label_Telo.Width - 5;

}

get

{

return X;

}

}

public double CorY

{

set

{

// коэф. если объект будет перемещаться вверх

double koefP = (double)(label_Telo.Parent.ClientRectangle.Height/2-(label_Golova.Height-label_Telo.Height)) / 300.0;

// коэф. если объект будет перемещаться вниз

double koefM = (double)(label_Telo.Parent.ClientRectangle.Height / 2 - label_Telo.Height - label_noga1.Height) / 300.0;

Y = value;

// в зависимости куда перемещается объект выбираем соответствующий коэф.

if (Y > 0)

label_Telo.Top = by - (int)(Y * koefP);

else

label_Telo.Top = by - (int)(Y * koefM);

// перемещаем объект

label_Golova.Top = label_Telo.Top + label_Telo.Height - label_Golova.Height;

label_noga1.Top = label_Telo.Top + label_Telo.Height;

label_noga2.Top = label_Telo.Top + label_Telo.Height;

}

get

{

return Y;

}

}

Для изменения положения объекта на форме, на форму были добавлены два текстовых поля: textbox1 и textbox2. В них указываются координаты объекта в реальной системе координат. Кроме того, на форму была добавлена кнопка «Изменить», при нажатии которой происходит перемещение объекта на форме в заданную координату.

Листинг события – нажатие на кнопку «Изменить»:

private void btnChange_Click(object sender, EventArgs e)

{

try

{

double dx = double.Parse(textBoxX.Text);

double dy = double.Parse(textBoxY.Text);

if (dx >= -300 & dx <= 300)

if (dy >= -300 & dy <= 300)

{

T.CorX = dx;

T.CorY = dy;

}

}

catch (Exception)

{ ; }

}