«Задача о многоугольниках»
Постановка минизадач:
Начальная ситуация – в рабочей области окна по щелчку левой кнопки мыши появляется одна "вершина" (окружность радиуса R). Если щелкаем в другую точку формы – вершина оказывается в новой точке Для "вершины" действует "drag & drop", т. е. её можно перетаскивать, зацепив мышью (при перетаскивании зажата левая кнопка мыши). Щелчок правой кнопкой мышки по "точке" удаляет вершину. Форма «вершины» может варьироваться – пользователь может выбирать между кругом (начальный вариант), квадратом и треугольником. Выбор формы должен осуществляться в строке меню
Напоминание: Типы вершин должны быть реализованы при помощи наследования от абстрактного класса и виртуальных методов.
Если происходит щелчок левой кнопкой мыши на пустую область, добавляется новая "вершина".
- Мы не знаем, сколько будет вершин, мы должны работать с любой – из всех динамических структур лучше подходит список, его и формируем В Paint теперь перебираем весь список и каждую вершину перерисовываем В MouseDown проверяем тоже весь список – тащить или добавлять ( и тут же рисовать, соответственно) новую вершину Изменятся ли остальные обработчики событий - думайте сами
!!! Обеспечить невозможность повторного открытия второго окна «Изменение радиуса вершин» (если одно окно открыто – другое такое же не должно появляться).
Динамика (работа с таймером) – в панели меню добавляются кнопки "Play" и "Stop". После нажатия "Play" каждая точка начинает двигаться по следующему закону: каждые t миллисекунд к её координатам x и y прибавляются случайные числа в диапазоне [-1, 1 ]. Параметр t также можно регулировать. В состоянии "Play" должны работать все остальные функции (добавление, drag & drop и так далее). При нажатии "Stop" движение прекращается.Сохранение и загрузка многоугольника через пункты меню file – save, file – open(, а также file – new) с выбором имени файла через соответствующее диалоговое окно.
Напоминаю, что мы объявляем статическими те характеристики, которые одинаковы для ВСЕХ объектов…для чего? Чтобы не дублировать одну и ту же информацию для каждого объекта. Этот же принцип должен быть реализован и при сериализации: для всех вершин только ОДИН раз сохранены значения радиуса и цвета вершин!
«Назад в будущее» Реализовать Undo – Redo, цель которых многоуровневая отмена и возврат действий.
Допускается не сохранять изменения статических характеристик (изменений цвета/радиуса вершин)


