Программный продукт "Графический редактор учебно-методических материалов"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
итного и 32-битного значения соответственно.
writeShort(ushort val), writeLong(ulong val) - методы позволяют сохранить 16-битное и 32-битное соответственно беззнаковое целое число в виде последовательности байт от старшего к младшему. Используется для сохранения служебной информации bmp файла.
Таким образом, данный класс позволяет производить снимок экрана OpenGL и сохранять его в файл соответствующий формату bmp. Для реализации сохранения полученного рисунка в другие растровые форматы можно воспользоваться следующей последовательностью шагов:
а)осуществление сохранения в файл bmp,
б)загрузка файла в специализированные структуры или классы открытых библиотек предназначенных для конвертирования файлов,
в)Сохранение рисунка в требуемый формат,
г)Удаление созданного временного файла bmp.
3.3.2.3 Реализация механизма отмена/возврат
Реализация механизма отмена/возврат предполагает возможности гибкого редактирования графических иллюстраций. Такой механизм достаточно широко используется в различных приложениях, начиная с операций над файлами в операционных системах, и заканчивая сложными программными комплексами. Необходимость использования данного механизма объясняется тем, что он прилагает пользователям гибкий инструмент редактирования, заключающийся в отмене нежелательных действий или возможностей удаления последних изменений и возврата их в случае необходимости.
В данном проекте реализована полная поддержка механизма отмена/возврат для созданных примитивов, при использовании операции отмена примитив удаляется с экрана и не рисуется, а при выполнении операции возврат последний удаленный примитив должен снова быть отображен на редактируемой иллюстрации. Дополнительно возможностью реализован механизм отмены последней созданной точки незавершенного примитива. Рассмотрим эти возможности более подробно.
Так как для хранения информации о примитивах используется массив экземпляров класса Примитив, то наиболее приемлемым способом реализации механизма отмена/возврат будет являться способ временного перенесения созданных примитивов во временный массив. Таким массивом является массив, предназначенный для хранения информации о созданных примитивах. При отмене выполняется следующая последовательность действий: перемещение последнего созданного примитива из массива хранения используемого для рисования в массив для хранения истории отмененных примитивов; уменьшение значения количества созданных примитивов; увеличение значения количества отмененных примитивов; рисование сцены по массиву созданных примитивов.
В случае, когда пользователь отменил первый созданный примитив или примитивы еще не были заданы, кнопка отмена блокируется во избежание ошибок обращения к адресам массива, которые не определены.
Для реализации действия Возврат необходимо произвести аналогичные действия с некоторыми изменениями: перемещение последнего отмененного примитива из массива хранения истории отмененных примитивов в массив, используемый для рисования; уменьшение значения количества отмененных примитивов; увеличение значения количества созданных примитивов; рисование сцены по массиву созданных примитивов.
Для избегания ситуаций выполнения действия Возврат в случаях, когда массив отмененных примитивов пуст кнопка, предназначенная для выполнения данного действия, блокируется.
Для реализации механизма отмены последней созданной точки используются функции UndoPoint, определенные в каждом классе. Данный метод позволяет определить различные ситуации отмены точки и при этом продолжить рисование примитива. Сложность выполнения механизма отмены в данном случае заключается в необходимости учета количества уже созданных точек, так как при удалении первой созданной точки необходимо производить удалении и самого примитива из массива предназначенного для рисования. С данной целью метод UndoPoint при условии удаления первой созданной точки примитива возвращает истинное значение, в противном случае - ложное. Еще одной особенностью является необходимость переноса для некоторых примитивов значения последней точки на те, которые не созданы, так как в противном случае рисование примитива при установке точек будет невозможно.
Для реализации полного механизма отмена/возврат при удалении точек необходимо сохранять отмененные точки в некоторый массив. Однако организация такого массива нецелесообразна с той точки зрения, что вызывает дополнительное использование оперативной памяти. При этом эффективность метода возврата точки вызывает сомнения с точки зрения его использования, так как пользователю гораздо проще выполнить указание новой точки для примитива, используя только мышь, чем нажать комбинацию клавиш на клавиатуре.
3.3.2.4 Реализация сетки/привязка к сетке
Реализация привязки к сетке является дополнительной возможностью для облегчения редактирования объектов создаваемого изображения. Суть использования состоит в том, что пользователь может задать точку только в узлах рисуемой сетки. Такой подход позволяет рисовать, например, правильные фигуры: равнобедренный треугольник, квадрат, прямоугольник и другие.
Реализация привязки к сетке осуществляется за iет использования специализированного класса clGrid. Рассмотрим основные свойства и методы данного класса.
Открытые свойства.visible - позволяет применить функцию отображения скрытия сетк
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение