Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Практические задания. Задание 1. Создание и использование отдельных классов для графических примитивов



Задание 1. Создание и использование отдельных классов для графических примитивов.

Постановка задачи. Требуется создать небольшой набор не связанных друг с другом классов, описывающих основные графические примитивы (окружность, отрезок, прямоугольник и т.д.). Каждый класс должен содержать необходимые параметры-свойства (координаты базовой точки, размеры, признак видимости), не менее двух конструкторов, метод отображения примитива Show, метод для перемещения объекта MoveTo. Кроме того, классы могут содержать уникальные методы, например – изменение радиуса окружности, изменение линейных размеров прямоугольника, поворот отрезка и т.д. Каждый класс оформляется в виде отдельного модуля, который подключается к основной программе для демонстрации возможностей.

Порядок выполнения работы (для инструментального пакета Delphi):

1. Создать новый проект и сохранить его в собственном каталоге.

2. Разместить на главной форме основное меню для последующей реализации команд демонстрации возможностей объектов-примитивов. На начальном этапе достаточно в меню поместить две команды – Создать и Переместить, подменю которых конкретизируют используемые объекты.

3. Разместить на форме компонент Image для отображения примитивов и выровнять его на всю клиентскую область.

4. Создать обработчик события формы OnCreate для инициализации датчика псевдослучайных чисел и установки режима рисования на поверхности компонента Image:

Image1.Canvas.Pen.Mode:= pmNotXOR;

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

5. Добавить в проект новый программный модуль, НЕ СВЯЗАННЫЙ со своей формой: команда меню File / New / Unit и обязательно сохранить его вместе с проектом. Поскольку модуль является чисто программным, то его заготовка содержит лишь заголовок, начало интерфейсной секции (директива interface) и начало секции реализации (директива implementation).

6. В интерфейсном разделе нового модуля ввести описание (ТОЛЬКО ОПИСАНИЕ!) одного из создаваемых классов (в разделе описания типов). Для простоты сначала можно взять класс окружностей, подробно описанный в лекционном материале. Остальные классы можно добавить после проверки работы класса окружностей. В классе сделать поля данных закрытыми, а методы – открытыми. Каждый примитив должен иметь базовую точку, изменение координат которой приводит к перемещению примитива без изменения его размеров.

7. Оформить раздел реализации модуля, включив в него программную реализацию каждого объявленного метода. Например:

procedure TCircle.MoveTo(dx, dy: integer);

Begin

Show; // повторный вывод для стирания изображения примитива

x:= x + dx; y:= y + dy; // изменение координат базовой точки

Show; // рисование в новом месте

End;

В методе MoveTo для удобства дальнейшего использования задаются не новые координаты базовой точки, а СМЕЩЕНИЕ относительно нее, которое может быть и отрицательным.

8. Программная реализация методов показа примитивов может использовать стандартные графические примитивы системы Windows. Например, вывод окружности выполняется следующим образом:

Form1.Image1.Canvas.Ellipse(x-r, y-r, x+r, y+r);

Поскольку этот код использует компонент Image основной формы, необходимо подключить модуль главной формы к модулю с классами, записав сразу после директивы interface строку

uses ИмяГлавногоМодуля;

9. После полного описания всех методов сохранить модуль и подключить его к основному модулю.

10. В разделе реализации основного модуля объявить одну-две переменные объектного типа, а также – массив объектных указателей для проверки возможностей групповой обработки объектов-примитивов.

11. Написать обработчики команд создания примитивов, выполняющие следующие действия:

· если соответствующий объект-примитив уже был ранее создан (указатель на него не равен nil), то стереть старое изображение повторным вызовом метода Show и уничтожить старый объект методом Free;

· создать новый объект вызовом конструктора со случайными параметрами примитива;

· показать примитив методом Show.

12. Написать обработчики команд перемещения примитивов в новую точку со случайными координатами, используя генерацию значений смещения координат в пределах [-50, 50].

13. Написать обработчики команд изменения геометрических свойств объектов (радиус окружности, размеры прямоугольника, положение конечной точки отрезка и т.д.).

14. Написать обработчики команд создания массивов объектов и группового изменения их свойств.

15. Сохранить проект и проверить его работу.





Дата публикования: 2014-11-02; Прочитано: 839 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...