Курсовая работа: Программирование графического режима

8. Освобождения контекста устройства (hDC)

Как и когда удалять замещенный bitmap, зависит от программиста и поставленной перед ним задачи.

Именно этот способ и используется в большинстве программ для копирования изображения.


2. КОНСТРУКТОРСКАЯ ЧАСТЬ

2.1. Общие сведения

Программа называется EasyPaint . Программа написана на языке программирования ассемблер в среде RadAsm и скомпилирована компилятором MASM32. Кроме того, при разработке использовались следующие программы:

1. Bred

2. ICAConverter

3. IrfanView

4. Microangelo

2.2. Функциональное назначение

Программа предназначена для предоставления простой работы с изображениями в формате BMP/DIB, для чего были реализованы необходимые инструменты, а также загрузка и сохранение изображений.

2.3. Описание логической структуры

2.3.1. Алгоритм работы программы

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

1. Обработка клавиатуры

2. Обработка «горячих клавиш» главного меню

3. Обработка сообщений к диалоговому окну

4. А также всех остальных сообщений как оконной функцией, так и стандартным обработчиком

При обработке перерисовки содержимое совместимого контекста копируется на основной контекст - в окно. Все рисование осуществляется при обработке событий от мыши, а также при изменении размеров окна.

При завершении работы программы совместимый контекст удаляется из памяти.

2.3.2. Структура программы

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

В этой процедуре вначале регистрируется класс окна и создается экземпляр, причем в качестве иконки и курсора выступают загруженные ресурсы. После этого окно центрируется на экране и в него добавляются элементы управления Панель управления и Строка состояния, описанные в файлах ToolBarRealization. inc и StatusBarRealization. inc соответственно. Элементы управления создаются и настраиваются, после этого они полностью готовы к функционированию как составные части программы.

Затем в файле InitApp. inc производятся действия по инициализации программы:

· производится вызов процедуры CreateBackBuffer (DoubleBuff. inc ), в которой создается совместимый контекст – для двойной буферизации вывода графики (задний буфер)

· вызов процедур SetPenParam и SetBrushColor (Draw. inc ) настраивает свойства объектов карандаш и кисть совместного контекста: устанавливаются цвет и толщина

В конце инициализации программы загружается список акселераторов из ресурсов, делается видимым главное окно и запускается цикл обработки сообщений. После завершения данного цикла вызов процедуры DeleteBackBuffer освобождает ресурсы, выделенные на задний буфер.

2.3.3. Работа с задним буфером (DoubleBuff . inc )

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

Задний буфер создается в процедуре CreateBackBuffer , которая не только создает буфер, но и кроме того позволяет менять его размер и даже копировать в новый буфер старое содержимое.

Для освобождения ресурсов буфера предназначена процедура DeleteBackBuffer .

Для очистки буфера (он заполняется белым цветом) предназначена процедура Clear .

Процедура Flip позволяет скопировать содержимое буфера на контекст окна.

Т.к. при вызове процедуры Flip отображается только заранее видимая часть изображения, то необходимо эту видимую часть вычислять. Это и делает процедура Resize .

Кроме того, в файле содержатся процедуры LoadFromFile и SaveToFile , позволяющие загружать и сохранять изображения соответственно.

2.3.4. Параметры заднего буфера (Draw . inc )

К-во Просмотров: 261
Бесплатно скачать Курсовая работа: Программирование графического режима