зад. для лаб
..docЗадание на лабораторную работу №1
«Изучение среды Delphi. Работа с компонентами Delphi»
Нарисовать заданную геометрическую фигуру, которая перемещается по заданной траектории и постоянно изменяет свой масштаб («дышит»).
Программу писать и отлаживать в среде программирования Delphi 3.
На форме приложения предусмотреть: регулятор относительного размера траектории; регуляторы диапазона и скорости масштабирования фигуры; регулятор скорости перемещения фигуры по траектории; настройку цвета фона и тона прорисовки.
Приложение должно иметь законченный вид, быть проработанным с дизайнерской и эргономической точки зрения.
ПРИМЕЧАНИЕ:
Окно прорисовки на форме приложения должно иметь значение alClient в опции Align (всегда занимать максимальное пространство на форме).
При изменении размеров формы приложения масштаб и центр прорисовки должны соответственно измениться, т.е. изображение всегда должно быть вписано в размеры формы окна прорисовки.
Координаты точек траектории и вершин фигуры целесообразно выбирать в диапазоне от -1 до 1.
В случае использования таймера для перемещения фигуры по траектории с целью обеспечения эффекта мультипликации (непрерывного движения со скоростью прорисовки 25 кадров в секунду) интервал отсчета следует принять равным 40мс. Скорость перемещения фигуры по траектории никоим образом не связана со скоростью прорисовки кадров, а определяется величиной шага смещения (чем больше шаг – тем выше скорость). Следует избегать перегрузки обработчика таймера вычислительными действиями, так как это приводит к «торможению» работы всей операционной системы.
Варианты фигур
Варианты траекторий
1. |
2. |
3. |
4. |
5. |
6. |
7. |
8. |
Распределение фигур и траекторий движения по вариантам заданий на лабораторную работу
|
|
|
|
|
|
|
|
Задание на лабораторную работу №2 (расширение ЛР№1)
«Работа с файлами и буфером обмена в Delphi»
Используя класс TClipboard в Delphi 3 зарегистрировать собственный формат обмена информацией через Clipboard (буфер обмена).
В качестве программы, передающей и принимающей данные из буфера обмена использовать программу лабораторной работы №1, соответственно расширив ее интерфейс: кнопками «Копировать» и «Вставить»; текстовым полем для отображения передаваемой информации; меню с командами «Копировать», «Вставить», «Вырезать» и «Удалить», сохранить/читать из текстового файла. Предусмотреть возможность редактирования фигуры из текстового поля.
Добавить в окно прорисовки счетчик кадров, для отображения количества кадров за одну секунду. В программе должно быть объявлено не менее четырех классов: форма приложения, фигура, траектория, буфер обмена. При чтении/записи с помощью OpenDialog и SaveDialog последние должны в качестве стартового каталога предоставлять текущий каталог, где размещается приложение.
В качестве данных, подлежащих обмену через Clipboard, взять координаты вершин фигуры (см. задание на ЛР1).
В Clipboard помещаются два формата: пользовательский формат и текст. Пользовательский формат представлен структурой, изображенной на рисунке 1.
Структура пользовательского формата
Рис.1
Формат текста представлен на следующем примере:
Квадрат
-1,0; 1,0
1,0; 1,0
1,0; -1,0
-1,0; -1,0
Первой строкой, как показано в этом примере, должно быть имя фигуры, а в следующих строках координаты вершин. Количество строк, содержащих координаты вершин будет определять количество вершин в фигуре, но не более тридцати.
Точно такой же текстовый формат используется для сохранения/чтения из файла.
При чтении фигуры из буфера обмена в первую очередь проверяется наличие в нем пользовательского (двоичного) формата. В случае отсутствия в буфере обмена пользовательского формата извлекается текстовый формат.
Если текст, передаваемый вашему приложению, содержит в числах координат недопустимые символы, то используйте блок try .. except, чтобы корректно обработать преобразование (например StrToFloat) и выдать соответствующее сообщение на экран (например ShowMessage). При преобразовании из строки в число с помощью функции StrToFloat необходимо помнить, что представление десятичной точки в операционной системе Windows настраивается пользователем и для корректного перевода потребуется использование переменной DecimalSeparator.
Предусмотреть перехват события WM_DRAWCLIPBOARD – изменение содержимого буфера обмена, то есть при изменении буфера обмена одной программой другие должны сразу отобразить новое содержимое буфера «у себя».
Запрещается многократно опрашивать (например, в циклах) компоненты имеющие событие OnChange.
Дополнительно: при изменении размеров формы изображение в окне прорисовки пропорционально масштабируется, т.е. траектория фигура соответственно масштабируются. Изменение амплитуды «дыхания» не должно ивлиять на скор
Задание на лабораторную работу №3
Работа с классами Exception, TIniFile, TPrinter
Основана на лабораторной работе №2. Используя класс Exception сделать порождение и обработку исключительных ситуаций на файловые операции и операции по работе с выделением блока памяти в операциях с буфером обмена.
С использованием класса TIniFile организовать чтение и сохранение настроек интерфейса: размеры и положение формы приложения; текущее положение движка компонента TrackBar и состояние компонентов CheckBox, цвета фона и тона прорисовки.
С использованием класса TPrinter организовать печать на принтере формы работающего приложения.
ость «дыхания» фигуры.