Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений

void CBMView::OnViewZoomout()

{// TODO: Add your command handler code here

m_dScale/=2;

OnUpdate(NULL, 0, NULL); }

void CBMView::OnViewStretchhalftone()

{// TODO: Add your command handler code here

m_nStretchMode=HALFTONE;

OnUpdate(NULL, 0, NULL); }

void CBMView::OnUpdateViewStretchhalftone(CCmdUI* pCmdUI)

{// TODO: Add your command update UI handler code here

pCmdUI->SetCheck(m_nStretchMode==HALFTONE); }

void CBMView::OnViewStretchcoloroncolor()

{// TODO: Add your command handler code here

m_nStretchMode=COLORONCOLOR;

OnUpdate(NULL, 0, NULL); }

void CBMView::OnUpdateViewStretchcoloroncolor(CCmdUI* pCmdUI)

{// TODO: Add your command update UI handler code here

pCmdUI->SetCheck(m_nStretchMode==COLORONCOLOR);}


3.3 Модификация класса документа для обеспечения работы с изображениями

Поскольку данными в нашей программе будут изображения, модифицируем класс документа так, чтобы он умел работать с изображениями. В проект приложения добавим файлы Raster.h, Raster.cpp. В классе документа надо определить данные как объекты класса СRaster. В принципе, для целей показа картинки на экране хватит и одного объекта СRaster. Чтобы наделить программу некоторыми возможностями по редактированию изображений потребуется не один, а, как минимум, два объекта: один для хранения исходной картинки, второй - буфер для приема преобразованной картинки.

Порядок работы с двумя объектами СRaster в этом случае будет выглядеть следующим образом:

- Загружаем изображение в первый объект СRaster и показываем его наэкране до тех пор, пока пользователь не даст команду выполнить какие-нибудь изменения изображения.

- Помещаем измененное изображение во второй объект СRaster и начинаем показывать второй объект-картинку.

- Может случиться так, что пользователю не понравится то, как мы изменили его картинку, тогда он отдает команду "Отменить преобразования".При этом меняются объекты местами.

3.4 Программная схема выполнения преобразований. Графические фильтры

Поскольку следует реализовать целый ряд процедур преобразования изображений, необходимо предусмотреть, как они будут уживаться между собой и взаимодействовать с остальными модулями программы. В мультимедийном программировании широко распространена концепция фильтров. Фильтр - это некоторая программа, которая, пропуская через себя данные, преобразует их некоторым образом. В нашем случае данными являются значения цветов пикселов изображения. Представим, что у нас имеется набор фильтров, пропуская через которые данные изображения мы можем добиваться различных эффектов (рис. 3.6.1).

Для того чтобы получить нужный эффект, достаточно просто указать программе, какой фильтр считать активным. В программе должна существовать "фильтрация" - процедура, в которой будет выполняться само пропускание данных через фильтр.

Фильтры можно реализовать в виде классов, производных от какого-то одного базового класса. В базовом классе следует определить набор методов, общих для всех фильтров. В программе заведем переменную - указатель на активный фильтр. Используя этот указатель, "фильтрация" будет обращаться к нужному фильтру.

К-во Просмотров: 371
Бесплатно скачать Дипломная работа: Разработка программного обеспечения для фильтрации растровых изображений