
- •Техническое задание Постановка задачи
- •Введение
- •Описание алгоритмов реализации эффектов для изображения
- •Наложение телевизионных помех (имитация)
- •Случайно разбросанные квадратики
- •Деление изображения линиями на 4 части от центра к краям
- •Деление изображения линиями на 4 части от краев к центру
- •Алгоритм установки прозрачности изображения
- •Алгоритм восстановления прозрачного изображения
- •Алгоритм получения негатива изображения
- •Алгоритм фильтрации изображения для ослабления перепадов яркости
- •Алгоритм получения черно-белого изображения
- •Описание программного продукта
- •Программно-аппаратные требования
- •Язык и среда программирования
- •Входные и выходные данные
- •Структура программы
- •Описание структурных элементов программы
- •Описание интерфейса и инструкция пользователю
- •«Случайно разбросанные квадратики»;
- •Заключение
- •Библиографический список
- •Приложение 1
- •Приложение 2
Описание структурных элементов программы
Основная форма и логика функционирования программы описана в следующих файлах:
Form1.cs
Form1.Designer.cs
Program.cs
Файл Form1.cs содержит описание класса Form, т.е. описание нашей формы, являющейся объектом этого класса. В нем представлена логика методов класса Form, а именно:
private void MakeGray(Bitmap bmp) – метод, отвечающий за обработку изображения, и приведение его в черно-белый вид. В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения. Метод был оптимизирован, вместо изображения мы блокируем набор данных изображения в памяти, и работаем с байтами этого изображения в памяти напрямую. После обработки мы копируем набор данных обратно в изображение, и производим разблокировку набора данных изображения в памяти. Оптимизация существенно сократила время обработки изображения;
private Bitmap _IncreaseBrightness(Image original, int sign) – метод, производящий фильтрацию изображения для ослабления перепадов яркости, реализует три варианта (в зависимости от входного параметра sign типа int) использования данного фильтра. В своей работе использует методы private Color _SubColors(Color x, Color y) и private Color _GetSumOfColor(Color[] colors) для вычисления разницы яркости одной из восьми точек вокруг обрабатываемой и обрабатываемой по интенсивности каждого цвета RGB, и рассчета среднего значения изменения яркости d соответственно; В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения;
private static Image Kvadr(Image original) с помощью таймера TimerKvadr реализует демонстрацию эффекта случайного разбрасывания квадратиков 5*5 пикселей черного цвета по всему изображению; В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения;
private static Image Proz(Image original, int procent) с помощью таймеров TimerProzr100, TimerProzr75, TimerProzr50, TimerProzr25 реализует демонстрацию эффекта превращения изображения в прозрачное на 100, 75, 50 и 25% соотвественно. В метод передается текущее изображение из picturebox1, и процент прозрачности (procent) в виде значения параметра альфа канала ARGB, от 0 до 255. Результатом работы является вывод в picturebox1 обработанного изображения;
private static Image Aproz(Image original) с помощью таймера TimerAprozr реализует демонстрацию эффекта превращения изображения из непрозрачного в прозрачное. В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения;
private static Image Invert(Image original) – метод, отвечающий за обработку изображения, и получение его негатива. Метод был оптимизирован, вместо изображения мы блокируем набор данных изображения в памяти, и работаем с байтами этого изображения в памяти напрямую. После обработки мы копируем набор данных обратно в изображение, и производим разблокировку набора данных изображения в памяти. Оптимизация существенно сократила время обработки изображения; В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 негатива изображения.
private static Bitmap GenerateNoise(Image original) при помощи таймера TimerNoize реализует демонстрацию эффекта превращения изображения в телевизионные помехи. В метод передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения;
public Image Kvadrcentrout(Image original) с помощью таймера Timerkvadrcentrout, и public Image Kvadrcentrin(Image original) c помощью таймера Timerkvadrcentrin реализуют демонстрацию эффекта деления изображения на 4 части черными линиями толщиной в 5 пикселей от центра изображения к его краям, и от краев изображения к его центру соответственно. В любой из методов передается текущее изображение из picturebox1, результатом работы является вывод в picturebox1 обработанного изображения;
Кроме того, в файле описаны обработчики событий нажатий на кнопки формы.
Файл Form1.Designer.cs представляет из себя структурированное описание свойств формы и ее элементов таких как физические характеристики (размеры, расположение), значения по умолчанию и др.
Файл Program.cs представляет собой описание главной точки входа для приложения.