Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

5_laba

.pdf
Скачиваний:
9
Добавлен:
27.05.2015
Размер:
666.37 Кб
Скачать

// Этот обработчик обновляет информацию на progressbar. private void backgroundWorker1_ProgressChanged(object sender,

ProgressChangedEventArgs e)

{

this.progressBar1.Value = e.ProgressPercentage;

}

Для реализации поддержки отмены в обработчике события Click кнопки отмены добавьте код, отменяющий асинхронную операцию.

private void cancelAsyncButton_Click(System.Object sender, System.EventArgs e)

{

//отменяем выполнение операции. this.backgroundWorker1.CancelAsync();

//Деактивирует кнопку Отмена. cancelAsyncButton.Enabled = false;

}

Следующие фрагменты кода в методе ComputeFibonacci сообщают о ходе выполнения и поддерживают отмену.

if (worker.CancellationPending)

{

e.Cancel = true;

}

...

int percentComplete =

(int)((float)n / (float)numberToCompute * 100); if (percentComplete > highestPercentageReached)

{

highestPercentageReached = percentComplete; worker.ReportProgress(percentComplete);

}

Класс Bitmap

Для выполнения этой работы вам необхо димо подробнее познакомиться с классом Bit map.

Инкапсу лирует точечный рисунок GDI+, состоящий из данных пикселей графического изображения и атрибутов рисунка. Объект Bit map используется для работы с изображениями, определяемыми данными пикселей.

Основные свойства, определенные в этом классе:

 

Имя

 

Описание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Flags

 

Получает флаги атрибутов для данных о пикселях это го

 

 

объекта Image.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FrameDimensionsList

 

Получает

 

массив

идентификаторов

GUID,

 

 

представляю щих размеры кадров в объекте Image.

 

 

 

 

 

 

Height

 

Получает высоту объекта Image в пикселях.

 

 

 

 

 

 

HorizontalResolution

 

Получает горизонтальное разрешение объекта Image в

 

 

пикселях на дюйм.

 

 

 

 

 

 

 

Palette

 

Возвращает или задает палитру

цветов, используемую

 

 

для объекта Image.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PhysicalDimension

 

Получает ширину и высо ту данного изображения.

 

PixelFormat

 

Получает формат пикселей объекта Image.

 

 

PropertyIdList

 

Получает

идентификаторы

(ID)

элементов

свойс тв,

 

 

хранящихся в объекте Image.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

PropertyItems

 

Получает

все

элементы

свойств

(части метаданных),

 

 

хранящихся в объекте Image.

 

 

 

 

 

 

 

 

 

 

 

 

RawFormat

 

Получает формат файла объекта Image.

 

 

 

Size

 

Получает

ширину

и высоту данного изображения в

 

 

пикселях.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tag

 

Возвращает

или

задает

объект,

предоставляющий

 

 

дополнительные данные об изображении.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

VerticalResolution

 

Получает

вертикальное

разрешение

объекта

Image в

 

 

пикселях на дюйм.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Width

 

Получает ширину объекта Image в пикселях.

 

Основные мето ды, реализуемые в рамках э того класса:

Имя

 

 

Описание

 

 

Clone

Создает точную копию данного объекта .

 

Dispose

Освобождает

все

ресурсы,

 

используемые

изображением.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Fro mHicon

Создает

изображение

Bit map

для

значка из

дескриптора Windows.

 

 

 

 

 

 

 

Fro mResource

Создает

изображение Bit map из у казанного ресурса

Windows.

 

 

 

 

 

 

 

 

 

 

 

GetBounds

Получает границы изображения в заданных единицах

измерения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Возвращает

информацию

о

параметрах,

GetEncoderParameterList

поддерживаемых

указанным

кодировщиком

 

изображения.

 

 

 

 

GetFrameCount

Возвращает ко личество кадров указанного размера.

GetHbit map

Создает

объект

точечного рисунка GDI из данно го

 

изображения.

 

 

 

 

 

 

 

 

GetHicon

Возвращает дескриптор для значка.

 

 

 

 

 

GetPixel

Получает цвет указанной точки в э том изображении.

 

 

 

 

GetPropertyItem

Получает указанный э лемент свойств из объекта.

 

 

 

 

 

GetThumbnailImage

Возвращает эскиз для объекта .

 

 

 

 

 

 

 

MakeTransparent

Делает заданный

цвет

прозрачным

для данно го

изображения.

 

 

 

 

 

 

 

 

 

RemovePropertyItem

Удаляет элемент указанного свойства из объекта .

 

RotateFlip

Поворачивает, зеркально отражает, либо поворачивает

и зеркально отражает объект.

 

 

 

 

 

 

Со храняет объект Image в указанный файл. В

Save

параметрах может быть указан кодировщик, его

 

определенные параметры.

 

 

 

SaveAdd

Добавляет

кадр в

файл

или по ток,

указанный

в

предыдущем вызове метода Save.

 

 

 

 

 

SelectActiveFrame

Выделяет кадр, заданный размером и индексом.

 

SetPixel

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

 

SetPropertyItem

Со храняет

э лемент

свойства (часть метаданных)

в

объекте.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SetResolution

Устанавливает разрешение для этого изображения.

 

Так, для по лучения цвета пикселя можно использовать следующее: old_pixel_color = (this_image as Bitmap).GetPixel(x, y);

а для установки нового цвета пикселя (на основе смеси цветов старого): byte new_color = Convert.ToByte(0.5 * Convert.ToDouble(old_pixel_color.R) +

0.29 * Convert.ToDouble(old_pixel_color.G) +

0.21 * Convert.ToDouble(old_pixel_color.B));

Color new_pixel_color = Color.FromArgb(old_pixel_color.A, new_color, new_color, new_color);

(this_image as Bitmap).SetPixel(x, y, new_pixel_color);

Самостоятельно познакомьтесь с рабо той компонента PictureBo x.

Использование меню

В зависимости от задач, решаемых приложением, в нем могут содержаться следующие виды меню: MenuStrip (ранее MainMenu), ContextMenuStrip, ToolStrip, StatusStrip.

MenuStrip предоставляет систему меню для формы. ContextMenuStrip – контейнер контекстного меню.

ToolStrip - контейнер для объектов панели инструментов Windows . StatusStrip – представляет собой элемент «строка состояния» Самостоятельно разберитесь с этими элементами

Варианты индивидуальных заданий.

Вариант 1. Построение фракталов.

Создать приложение позволяющие строить три разные фрактала: множество Мандельброта (рис. 1), фрактал коробка(рис. 2), звезда Дарера (рис. 3). Кнопки построения фракталов разместить в главном меню приложения (MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Фракталы

oКоробка

o Дарер

o Мандельброта o Свойства

Рис 1.

Рис 2.

Рис 3.

При нажатии на кнопку «Свойства» должно появляться модальное диалоговое окно с основными свойствами фракталов, такими как: число итерационных шагов, цвет и др., приняв во внимание, что каждый вид фрактала настраивается по своему. Каждый новый фрактал необходимо строить в MDI дочернем окне основной формы, количество возможных построенный фракталов должно быть неограниченно. Все расчеты фракталов должны выполнятся в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход построения фрактала. Построенные фракталы должны быть отображены в PictureBox, расположенном в той же дочерней форме. Предусмотреть возможность сохранения изображений - отображение меню с кнопкой «Сохранить» нажатием правой кнопки мыши по рисунку.

Вариант 2. Сжатие изображений.

Создать приложение позволяющие сжимать загруженные изображения двумя различными алгоритмами на выбор (выбрать из списка, по одному из двух имеющихся групп, объяснить

принцип работы(по коду) выбранных алгоритмов преподавателю!!!).

Список алгоритмов:

1.Алгоритмы сжатия без потерь

a.Алгоритм RLE

b.Алгоритм LZW

c.JBIG

d.Lossless JPEG

e.Кодирование с предсказаниями

f.Хоффмана

2.Алгоритмы сжатия с потерями

a.Алгоритм JPEG

b.Алгоритм JPEG-2000

c.Фрактальный алгоритм

d.Рекурсивный (волновой) алгоритм

e.Кодирование с предсказаниями

f.Вейвлет-кодирование

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Сжатие

o1 метод

o 2 метод o Свойства

При нажатии на кнопку «Свойства» должно появляться модальное диалоговое окно с основными настройками методов сжатия, также выбрать с помощью openFileDialog изображение для сжатия и папку (folderBrowserDialog) для сохранения результатов с форматом выходного изображения, приняв во внимание, что каждый вид сжатия имеет свои параметры. Все загруженные изображения поместить в MDI дочернем окне(каждое изображение в своем окне) основной формы, количество изображений должно быть неограниченно. Все расчеты должны выполнятся в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия.

Вариант 3. Фильтрация изображений.

Создать приложение позволяющие улучшать изображения методом фильтрации в частотной области используя двумерной ДПФ с двумя разными фильтрами : фильтр низких частот Баттерворта и гауссов фильтр низких частот (при желании указанные фильтры можно заменить на любые два своих).

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Сжатие

o1 фильтр

o 2 фильтр o Свойства

При нажатии на кнопку «Свойства» должно появляться модальное диалоговое окно с основными настройками методов сжатия, также выбрать с помощью openFileDialog изображение(я) для фильтрации и папку (folderBrowserDialog) для сохранения результатов с форматом выходного изображения, приняв во внимание, что каждый вид фильтрации имеет свои настраиваемые параметры. Все загруженные изображения поместить в MDI дочернем окне (каждое изображение в своем окне, изображения фильтров в одном окне с фильтруемым изображением) основной формы, количество изображений должно быть неограниченно. Все расчеты должны выполняться в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия.

Вариант 4. Работа с изображениями.

Создать приложение позволяющие обрабатывать изображения используя:

Просветление/Затемнение

Перевод в негатив

Пороговое преобразование(бинаризация)

Контраст

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Методы

o1 метод

o ………………

o N метод o Свойства

Все загруженные изображения поместить в MDI дочернем окне(разделить дочернюю форму на две области – загружаемое изображение и изменяемое изображение) основной формы, количество изображений должно быть неограниченно. Все настраиваемые параметры, включая выбор файла изображения, ползунки величин и др., должны быть размещены там же где и

изображения, в отдельном контейнере. Все расчеты должны выполняться в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия. Приложение должно корректно обрабатывать цветные

и черно белые изображения, все три канала.

Вариант 5. Работа с изображениями.

Создать приложение позволяющие обрабатывать изображения используя:

Цветовая (гамма преобразование) коррекция изображения(значения яркости пикселей изменяются по закону степенных функций).

Фильтр сглаживания

Фильтр «подчеркивания границ»

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Методы

o1 метод

o ………………

o N метод o Свойства

Все загруженные изображения поместить в MDI дочернем окне(разделить дочернюю форму на две области – загружаемое изображение и изменяемое изображение) основной формы, количество изображений должно быть неограниченно. Все настраиваемые параметры, включая выбор файла изображения, ползунки величин и др., должны быть размещены там же где и изображения, в отдельном контейнере. Все расчеты должны выполняться в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия. Приложение должно корректно обрабатывать цветные

и черно белые изображения, все три канала.

Вариант 6. Работа с изображениями.

Создать приложение позволяющие обрабатывать изображения используя:

Медианный фильтр.

Метод усиления края по Лапласу

Метод Усиление края методом сдвига и разности

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Методы

o1 метод

o ………………

o N метод o Свойства

Все загруженные изображения поместить в MDI дочернем окне(разделить дочернюю форму на две области – загружаемое изображение и изменяемое изображение) основной формы, количество изображений должно быть неограниченно. Все настраиваемые параметры, включая выбор файла изображения, ползунки величин и др., должны быть размещены там же где и изображения, в отдельном контейнере. Все расчеты должны выполняться в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия. Приложение должно корректно обрабатывать цветные

и черно белые изображения, все три канала.

Задание 7. Работа с изображениями.

Создать приложение позволяющие обрабатывать изображения используя:

Выделение края (границ) с оператором Робертса.

Выделение края (границ) с оператором Собеля.

Выделение края (границ) с оператором Превита

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Методы

o1 метод

o ………………

o N метод o Свойства

Все загруженные изображения поместить в MDI дочернем окне(разделить дочернюю форму на две области – загружаемое изображение и изменяемое изображение) основной формы, количество изображений должно быть неограниченно. Все настраиваемые параметры, включая выбор файла изображения, ползунки величин и др., должны быть размещены там же где и изображения, в отдельном контейнере. Все расчеты должны выполняться в отдельном потоке, для этого необходимо использовать BackgroundWorker. Внизу каждого дочернего окна необходимо использовать ProgressBar в котором показывается ход сжатия. Приложение должно корректно обрабатывать цветные

и черно белые изображения, все три канала.

Вариант 8. Работа с изображениями.

Создать приложение позволяющие обрабатывать изображения используя:

Масштабирование изображений с помощью метода ближайшего соседа.

Масштабирование изображений с помощью метода билинейной интерполяции.

Вращение – поворачивать изображение вокруг

произвольной точки на любой произвольный угол (точку вращения задавать на исходном изображении с помощью мыши)

Кнопки управления разместить в главном меню приложения(MenuStrip). Пример блоков меню:

Файл

oЗакрыть активное окно

oВыход

Методы

o1 метод

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]