Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаб3_Разработка_Классов3.doc
Скачиваний:
4
Добавлен:
18.11.2018
Размер:
256.51 Кб
Скачать

4.3. Изменение формы многоугольника.

Один из наиболее простых и часто используемых методов изменения формы многоугольника, в частности изменение положения одной из его вершин заключается в следующем:

Подготовительная фаза.

  • Определение факта попадания курсором в вершину выбранного многоугольника. Для этого следует предусмотреть в классе формы приложения наличие переменной, которая соответствует порядковому номера выбранного для корректировки многоугольника в их общем списке (или ссылку на активный многоугольник) и порядковый номер (или индекс) вершины в списке вершин выбранного многоугольника (или ссылки на объект этой вершины).

Фаза корректировки положения вершины.

  • Определить требуемое смещение корректируемой вершины относительно своего старого положения. Для того, чтобы выбранная вершина перемещалась вслед за курсором, то в качестве такого смещения целесообразно принять соответствующее смещение курсора от своего прежнего положения.

  • Изменить координаты перемещаемой вершины и, в зависимости от направления перемещения, перерисовать область, которую занимали раньше и занимают в настоящий момент грани многоугольника, сопряженные с перемещаемой вершиной. В результате это будет выглядеть как растяжение или сжатие сторон (граней) фигуры, сопряжённых с перемещаемой вершиной объекта. По сути дела, такой подход представляет собой модификацию способа перемещения фигуры, рассмотренного в предыдущем разделе 4.2.

Заключительная фаза.

  • Установка индекса выбранной фигуры и индекса выбранной вершины в значения, не соответствующие реальным значениям (например, -1) и говорящие о том, что не выбрано ни одной фигуры и ни одной вершины для корректировки ее положения. При использовании указателей на активную фигуру и ее корректируемую вершину в качестве таких значений следует использовать значение null.

В результате создаётся эффект плавного изменения (вслед за курсором) положения корректируемой вершины многоугольника при одновременном и соответствующем изменении размеров и расположения смежных с ним сторон.

Примечание. При реализации рассмотренных выше методик редактирования положения и формы геометрических фигур, следует определить реализацию функций отклика видимой компоненты, расположенной на форме окна приложения(например, PaintBox), на события, поступающие от манипулятора типа "мыши", таких как: OnMouseDown, OnMouseUp и OnMouseMove.

Подготовительную фазу следует реализовать с помощью реакции на событие OnMouseDown, фазу редактирования - OnMouseMove и заключительную фазу - с помощью OnMouseUp.

5. Задание на лабораторную работу.

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

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

а) Разработать абстрактное представление такой разновидности геометрических объектов, которые известны нам как многоугольники, в виде класса, позволяющего имитировать характеристики и поведение данного понятия (см. содержимое разделов 1,2 и 4.1).

б) На основе разработанного класса многоугольника построить интерфейс приложения, предназначенного для создания и редактирования многоугольных фигур и обеспечивающего следующие возможности:

- создавать новые фигуры в виде многоугольников с произвольным количеством вершин;

- перемещать фигуры в переделах клиентной части окна приложения тремя способами, описанными в разделе 4.2.

- изменять форму выбранного многоугольника путем изменения положения любой из его вершин (раздел 4.3);

- добавлять и удалять вершины у выбранного многоугольника;

- раскрашивать фигуры и их контуры в произвольные цвета и с использованием различных стилей.

в) Поскольку основная работа приложения происходит в результате его ответной реакции на события нажатия на клавишу "мыши" и перемещение "мыши", то необходимо разработать алгоритмы функционирования приложения реагирующего на эти два события.

г) На основе созданных алгоритмов и класса многоугольника разработать программное приложение для редактирования фигур.

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

е) В соответствии с разделом 7 составить пояснительную записку в форме отчета по лабораторной работе

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