Описание интерфейса и инструкция пользователю 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Описание интерфейса и инструкция пользователю



Программа разработана для ОС Microsoft Windows версии не ниже XP. Программа может быть запущена из любого места на любом жестком диске. Перед запуском программы следует убедиться в том, что платформа.NET Framework версии не ниже 4.5 установлена. Работа программы в иных условиях не гарантируется. Для запуска программы, следует запустить файл Kursovoi_Kharayan_a31.exe.

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

Интерфейс (рис.1.) имеет 17 кнопок управления, которые позволяют загрузить нужное изображение, начать и остановить демонстрацию нужного эффекта, восстановить исходное изображение и сохранить изображение с наложенными на него эффектами в форматах JPG либо BMP с разрешением 640*480 в любом доступном месте.

Рис. 1. Интерфейс программы

 

 

В интерфейс входят следующие кнопки:

Кнопки общего назначения:

1) «Открыть изображение» - служит для открытия файла изображения для обработки;

2) «Сохранить изображение» - служит для сохранения обработанного файла изображения;

3) «Остановить демонстрацию» - для эффектов с динамической демонстрацией;

4) «Восстановить исходное изображение» - для загрузки изображения заново.

Блок кнопок запуска эффектов с динамической демонстрацией

5) «Наложение телевизионных помех»;

6) «Случайно разбросанные квадратики»;

7) 2 кнопки «Разделение изображения на 4 части»: от центра к краям и от краев к центру;

8) 4 кнопки «Сделать изображение прозрачным на» на 25, 50, 75 и 100%;

9) Кнопка «Восстановить прозрачное изображение»;

Блок кнопок запуска эффектов со статической демонстрацией

10) «Получить негатив изображения»;

11) «Увеличить яркость»;

12) «Уменьшить яркость»;

13) «Увеличить контрастность»;

14) «Преобразовать изображение в черно-белое».

После запуска программного продукта автоматически загружается изображение реки Малая Коша (центральная часть Тверской области). Пользователь может сразу приступать к применению эффектов для этого изображения. Чтобы загрузить для обработки другое изображение, пользователю следует нажать на кнопку «Открыть изображение».

Запуская динамическую демонстрацию эффекта, пользователю следует помнить, что он может остановить демонстрацию только последнего из запущенных динамических эффектов. Невозможность остановки сразу всех демонстраций предусмотрена для более гибкого комбинирования сразу нескольких эффектов, например, использование эффекта «наложения телевизионных помех» совместно с эффектом «деления изображения на 4 части от центра изображения к его краям» может дать такую интересную картинку, собственно демонстрирующую работу алгоритма «деления изображения на 4 части от центра изображения к его краям» более наглядно:

Рис. 2. Комбинирование эффектов наложения телевизионных помех и деления изображения на 4 части от центра изображения к его краям

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

Рис. 3 Исходное изображение с примененным к нему эффектом получения негатива.

Пользователь может в любой момент сохранить текущее изображение, находящееся в окне, вне зависимости от того применяется ли к нему в данный момент эффект со статической или динамической демонстрацией именно в том виде, в котором оно находится на момент нажатия кнопки «Сохранить изображение». После нажатия этой кнопки пользователь может сохранить нужное ему изображение в любое доступное ему место на любом жестком диске в формате BMP либо JPG.

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

 


Заключение

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

Для реализации алгоритмов использовался такой язык программирования, как Visual С#, использовалась среда программирования Microsoft Visual Studio 2012.

Отладка и тестирование проводились в среде разработки Microsoft Visual Studio 2012.

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

Программа работает корректно, имеется возможность для добавления других эффектов.

Библиографический список

1) Н. Б. Культин «Visual C# в задачах и примерах» БХВ-Петербург, 2009

 

2) Селянкин В.В., Шилов Д.А. Руководство к лабораторным работам «Двумерная обработка растровых изображений» по курсу «Компьютерная графика», Таганрог: Изд-во ТРТУ, 2001. 28с.

 

3) MSDN – сеть разработчиков Microsoft

http://msdn.microsoft.com/ru-ru#fbid=PSBoak1OByD

 


 

Приложение 1

 

Листинг программного продукта:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Drawing.Imaging;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Runtime.InteropServices;

 

namespace Negative

{

public partial class Form1: Form

{

public Form1()

{

InitializeComponent();

 

}

public Timer tmr1;

public Image ishImg;

public Int32 ix = 2;

public Int32 iy = 2;

public bool ishImgenable = false;

 

private void MakeGray(Bitmap bmp) //Преобразование изображения в черно-белое

{

// Задаём формат Пикселя

PixelFormat pxf = PixelFormat.Format24bppRgb;

 

// Получаем данные картинки

Rectangle rect = new Rectangle(0, 0, bmp.Width, bmp.Height);

//Блокируем набор данных изображения в памяти

BitmapData bmpData = bmp.LockBits(rect, ImageLockMode.ReadWrite, pxf);

 

// Получаем адрес первой линии

IntPtr ptr = bmpData.Scan0;

 

// Задаём массив из Byte и помещаем в него набор данных.

// int numBytes = bmp.Width * bmp.Height * 3;

//На 3 умножаем - поскольку RGB цвет кодируется 3-мя байтами

int numBytes = bmpData.Stride * bmp.Height;

int widthBytes = bmpData.Stride;

byte[] rgbValues = new byte[numBytes];

 

// Копируем значения в массив

Marshal.Copy(ptr, rgbValues, 0, numBytes);

 

// Перебираем пикселы по 3 байта на каждый и меняем значения

for (int counter = 0; counter < rgbValues.Length; counter += 3)

{

 

int value = rgbValues[counter] + rgbValues[counter + 1] + rgbValues[counter + 2];

byte color_b = 0;

 

color_b = Convert.ToByte(value / 3);

 

 

rgbValues[counter] = color_b;

rgbValues[counter + 1] = color_b;

rgbValues[counter + 2] = color_b;

 

}

// Копируем набор данных обратно в изображение

Marshal.Copy(rgbValues, 0, ptr, numBytes);

 

// Разблокируем набор данных изображения в памяти

bmp.UnlockBits(bmpData);

}

 

private Color _GetSumOfColor(Color[] colors) // Рассчет среднего значения изменения яркости d

{

int rSum = 0;

int gSum = 0;

int bSum = 0;

foreach (var color in colors)

{

rSum += color.R;

gSum += color.G;

bSum += color.B;

}

if (rSum < 0) rSum = 0;

if (rSum > 255) rSum = 255;

if (gSum < 0) gSum = 0;

if (gSum > 255) gSum = 255;

if (bSum < 0) bSum = 0;

if (bSum > 255) bSum = 255;

return Color.FromArgb(rSum, gSum, bSum);

}

 

private Color _SubColors(Color x, Color y) // Рассчет разницы яркости одной из восьми точек вокруг обрабатываемой и обрабатываемой по интенсивности каждого цвета RGB

{

return Color.FromArgb(Math.Abs(x.R - y.R), Math.Abs(x.G - y.G), Math.Abs(x.B - y.B));

}

 

private Bitmap _IncreaseBrightness(Image original, int sign)// Изменения яркости

{

Bitmap bmp = new Bitmap(original);

var points = new[] { new Point(-1, 1), new Point(0,1), new Point(1,1),

new Point(-1, 0), new Point(0,0), new Point(1,0),

new Point(-1, -1), new Point(0,-1), new Point(1,-1) };

var outBmp = new Bitmap(bmp.Width, bmp.Height);

int w = bmp.Width;

int h = bmp.Height;

for (int y = 0; y < h; y++)

{

for (int x = 0; x < w; x++)

{

int count = 0;

foreach (var point in points)

{

if (!((x + point.X >= 0) && (x + point.X < w) && (y + point.Y >= 0) && (y + point.Y < h))) ++count;

}

if (count == 0)

{

Color d = _GetSumOfColor(new[]{_SubColors(bmp.GetPixel(x-1, y+1), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x, y+1), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x+1, y+1), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x-1, y), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x+1, y), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x-1, y-1), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x, y-1), bmp.GetPixel(x,y)),

_SubColors(bmp.GetPixel(x+1, y-1), bmp.GetPixel(x,y))

});

double r = 0;

double g = 0;

double b = 0;

if (sign == 0)

{

r = bmp.GetPixel(x, y).R + d.R;

g = bmp.GetPixel(x, y).G + d.G;

b = bmp.GetPixel(x, y).B + d.B;

}

else if (sign == 1)

{

r = bmp.GetPixel(x, y).R - d.R;

g = bmp.GetPixel(x, y).G - d.G;

b = bmp.GetPixel(x, y).B - d.B;

}

else if (sign == 2)

{

if (bmp.GetPixel(x, y).R >= d.R) r = bmp.GetPixel(x, y).R + d.R; else r = bmp.GetPixel(x, y).R - d.R;

if (bmp.GetPixel(x, y).G >= d.G) g = bmp.GetPixel(x, y).G + d.G; else g = bmp.GetPixel(x, y).G - d.G;

if (bmp.GetPixel(x, y).B >= d.B) b = bmp.GetPixel(x, y).B + d.B; else b = bmp.GetPixel(x, y).B - d.B;

}

if (r < 0) r = 0;

if (r > 255) r = 255;

if (g < 0) g = 0;

if (g > 255) g = 255;

if (b < 0) b = 0;

if (b > 255) b = 255;

outBmp.SetPixel(x, y, Color.FromArgb((int)r, (int)g, (int)b));

}

}

}

return outBmp;

}

 

private static Image Kvadr(Image original)// Метод случайного разбрасывания черных квадратиков по изображению

{

Bitmap KvadrBmp = new Bitmap(original);

 

Random r = new Random();

 

int PictureHeight = KvadrBmp.Height;

int PictureWidth = KvadrBmp.Width;

 

int iter = PictureWidth * PictureHeight / 100000;

 

int i = 0;

 

while (i < iter)

 

{

int numpx = r.Next(3, PictureWidth-3);

int numpy = r.Next(3, PictureHeight-3);

 

KvadrBmp.SetPixel(numpx, numpy, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx-1, numpy-1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx-1, numpy, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx, numpy-1, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx+1, numpy+1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx+1, numpy, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx, numpy+1, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx+1, numpy-1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx-1, numpy+1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx + 2, numpy, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx - 2, numpy, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx, numpy + 2, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx - 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx - 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx - 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx + 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx + 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx + 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx + 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx + 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx + 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

 

KvadrBmp.SetPixel(numpx - 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx - 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx - 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

KvadrBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

i++;

}

return KvadrBmp;

}

 

private static Image Proz(Image original, int procent)// Метод установки прозрачности изображения

{

Bitmap ProzBmp = new Bitmap(original);

 

Random r = new Random();

 

int PictureHeight = ProzBmp.Height;

int PictureWidth = ProzBmp.Width;

 

int iter = PictureWidth * PictureHeight / 100;

 

int i = 0;

 

while (i < iter)

{

int numpx = r.Next(0, PictureWidth);

int numpy = r.Next(0, PictureHeight);

int rcanal = ProzBmp.GetPixel(numpx, numpy).R;

int gcanal = ProzBmp.GetPixel(numpx, numpy).G;

int bcanal = ProzBmp.GetPixel(numpx, numpy).B;

ProzBmp.SetPixel(numpx, numpy, Color.FromArgb(procent, rcanal, gcanal, bcanal));

i++;

}

return ProzBmp;

}

 

private static Image Aproz(Image original)// Метод восстановления прозрачного изображения

{

Bitmap AprozBmp = new Bitmap(original);

 

Random r = new Random();

 

int PictureHeight = AprozBmp.Height;

int PictureWidth = AprozBmp.Width;

 

int iter = PictureWidth * PictureHeight / 100;

 

int i = 0;

 

while (i < iter)

{

int numpx = r.Next(0, PictureWidth);

int numpy = r.Next(0, PictureHeight);

int rcanal = AprozBmp.GetPixel(numpx, numpy).R;

int gcanal = AprozBmp.GetPixel(numpx, numpy).G;

int bcanal = AprozBmp.GetPixel(numpx, numpy).B;

AprozBmp.SetPixel(numpx, numpy, Color.FromArgb(255, rcanal, gcanal, bcanal));

i++;

}

return AprozBmp;

}

 

private static Image Invert(Image original)// Метод получения негатива изображения

{

Bitmap myImage = new Bitmap(original);

BitmapData imageData = myImage.LockBits(new Rectangle(0, 0, myImage.Width, myImage.Height), ImageLockMode.ReadWrite, PixelFormat.Format32bppArgb);

int stride = imageData.Stride;

IntPtr Scan0 = imageData.Scan0;

 

unsafe

{

byte* p = (byte*)(void*)Scan0;

 

int nOffset = stride - myImage.Width * 4;

int nWidth = myImage.Width;

 

for (int y = 0; y < myImage.Height; y++)

{

 

for (int x = 0; x < nWidth; x++)

{

p[0] = (byte)(255 - p[0]);

p[1] = (byte)(255 - p[1]);

p[2] = (byte)(255 - p[2]);

p += 4;

 

}

p += nOffset;

}

}

 

myImage.UnlockBits(imageData);

return (Image)myImage;

}

 

private static Bitmap GenerateNoise(Image original)// Метод создания из изображения имитации телевизионных помех

{

Bitmap finalBmp = new Bitmap(original);

Random r = new Random();

 

int PictureHeight = finalBmp.Height;

int PictureWidth = finalBmp.Width;

 

int iter = PictureWidth * PictureHeight / 10;

int i = 0;

while (i < iter)

{

int numc = r.Next(0, 256);

int numpx = r.Next(0, PictureWidth);

int numpy = r.Next(0, PictureHeight);

finalBmp.SetPixel(numpx, numpy, Color.FromArgb(255, numc, numc, numc));

i++;

}

 

return finalBmp;

}

 

public Image Kvadrcentrout(Image original)// Метод деления изображения на 4 части черными линиями толщиной в 5 пикселей от центра изображения к его краям

{

Bitmap centroutBmp = new Bitmap(original);

 

Random r = new Random();

 

float py = centroutBmp.Height / 2;

float px = centroutBmp.Width / 2;

 

int x = (int)px;

int y = (int)py;

 

 

int numpx = x;

int numpy = y - ix;

 

 

centroutBmp.SetPixel(numpx, numpy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 1, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

int numpyy = y + ix;

 

centroutBmp.SetPixel(numpx, numpyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 1, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

 

int numpxx = x + iy;

int numpyyy = y;

 

 

centroutBmp.SetPixel(numpxx, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

 

int numpxxx = x - iy;

 

centroutBmp.SetPixel(numpxxx, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

 

return centroutBmp;

}

 

public Image Kvadrcentrin(Image original)// Метод деления изображения на 4 части черными линиями толщиной в 5 пикселей от краев изображения к его центру

{

Bitmap centroutBmp = new Bitmap(original);

 

Random r = new Random();

 

int x = centroutBmp.Width;

int y = centroutBmp.Height;

 

int numpx = x / 2;

int numpy = y - ix - 1;

 

 

centroutBmp.SetPixel(numpx, numpy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 1, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpy - 2, Color.FromArgb(255, 0, 0, 0));

 

int numpyy = ix;

 

centroutBmp.SetPixel(numpx, numpyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 1, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 1, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx + 2, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 1, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx + 2, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpx - 2, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 1, numpyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx - 2, numpyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpx, numpyy - 2, Color.FromArgb(255, 0, 0, 0));

 

int numpxx = x - iy - 1;

int numpyyy = y / 2;

 

 

centroutBmp.SetPixel(numpxx, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx + 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx + 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxx - 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx - 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

 

int numpxxx = iy;

 

centroutBmp.SetPixel(numpxxx, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 1, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 2, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy - 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx + 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx + 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

 

centroutBmp.SetPixel(numpxxx - 2, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 1, numpyyy + 2, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx - 2, numpyyy + 1, Color.FromArgb(255, 0, 0, 0));

centroutBmp.SetPixel(numpxxx, numpyyy - 2, Color.FromArgb(255, 0, 0, 0));

 

 

return centroutBmp;

}

 

private void TimerNoize(object sender, EventArgs e)//Таймер для Метода создания из изображения имитации телевизионных помех

{

pictureBox1.Image = GenerateNoise(pictureBox1.Image);

}

 

private void TimerProzr100(object sender, EventArgs e)//Таймер для метода установки прозрачности изображения на 100%

{

pictureBox1.Image = Proz(pictureBox1.Image,1);

}

 

private void TimerProzr25(object sender, EventArgs e)//Таймер для метода установки прозрачности изображения на 25%

{

pictureBox1.Image = Proz(pictureBox1.Image, 191);

}

 

private void TimerProzr50(object sender, EventArgs e)//Таймер для метода установки прозрачности изображения на 50%

{

pictureBox1.Image = Proz(pictureBox1.Image, 128);

}

 

private void TimerProzr75(object sender, EventArgs e)//Таймер для метода установки прозрачности изображения на 25%

{

pictureBox1.Image = Proz(pictureBox1.Image, 64);

}

 

private void TimerAprozr(object sender, EventArgs e)//Таймер для метода восстановление непрозрачности прозрачного изображения

{

pictureBox1.Image = Aproz(pictureBox1.Image);

}

 

private void TimerKvadr(object sender, EventArgs e)//Таймер для метода случайного разбрасывания черных квадратиков по изображению

{

pictureBox1.Image = Kvadr(pictureBox1.Image);

}

 

private void Timerkvadrcentrout(object sender, EventArgs e)// Таймер для метода деления изображения на 4 части черными линиями толщиной в 5 пикселей от центра изображения к его краям

{

pictureBox1.Image = Kvadrcentrout(pictureBox1.Image);

if (ix <= (pictureBox1.Image.Height) / 2 - 4) { ix++; }

else ix = 2;

if (iy <= (pictureBox1.Image.Width) / 2 - 4) { iy++; }

else iy = 2;

}

 

private void Timerkvadrcentrin(object sender, EventArgs e)// Таймер для метода деления изображения на 4 части черными линиями толщиной в 5 пикселей от краев изображения к его центру

{

pictureBox1.Image = Kvadrcentrin(pictureBox1.Image);

if (ix <= (pictureBox1.Image.Height) / 2 - 4) { ix++; }

else ix = 2;

if (iy <= (pictureBox1.Image.Width) / 2 - 4) { iy++; }

else iy = 2;

}

private void button1_Click(object sender, EventArgs e)// Далее следуют обработчики событий нажатий на кнопки

{

OpenFileDialog openImg = new OpenFileDialog();

 

openImg.Title = "Открыть изображение";

openImg.Filter = "*.jpg|*.jpg|Все файлы (*.*)|*.*";

 

if (openImg.ShowDialog() == DialogResult.OK)

{

pictureBox1.Image = new Bitmap(openImg.OpenFile());

 

}

 

openImg.Dispose();

}

 

private void Form1_Load(object sender, EventArgs e)

{

 

}

 

private void button2_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

pictureBox1.Image = Invert(pictureBox1.Image);

}

 

private void button3_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 10;

tmr1.Tick += new System.EventHandler(TimerNoize);

tmr1.Start();

}

 

private void button4_Click(object sender, EventArgs e)

{

tmr1.Stop();

}

 

private void button5_Click(object sender, EventArgs e)

{

pictureBox1.Image = ishImg;

}

 

private void button6_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 10;

tmr1.Tick += new System.EventHandler(TimerKvadr);

tmr1.Start();

}

 

private void button7_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(TimerProzr100);

tmr1.Start();

}

 

private void button8_Click(object sender, EventArgs e)

{

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(TimerAprozr);

tmr1.Start();

}

 

private void button9_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(TimerProzr25);

tmr1.Start();

}

 

private void button10_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(TimerProzr50);

tmr1.Start();

}

 

private void button11_Click(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(TimerProzr75);

tmr1.Start();

}

 

private void button1_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(Timerkvadrcentrout);

tmr1.Start();

}

 

private void button2_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

tmr1 = new Timer();

tmr1.Interval = 1;

tmr1.Tick += new System.EventHandler(Timerkvadrcentrin);

tmr1.Start();

}

 

private void button3_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

pictureBox1.Image = _IncreaseBrightness (pictureBox1.Image,0);

}

 

private void button4_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

pictureBox1.Image = _IncreaseBrightness(pictureBox1.Image, 1);

}

 

private void button5_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

pictureBox1.Image = _IncreaseBrightness(pictureBox1.Image, 2);

}

 

private void button6_Click_1(object sender, EventArgs e)

{

if (ishImgenable == false)

{

ishImg = pictureBox1.Image;

ishImgenable = true;

}

Bitmap b = new Bitmap(pictureBox1.Image);

MakeGray(b);

Image img = b;

pictureBox1.Image = img;

}

 

private void textBox4_TextChanged(object sender, EventArgs e)

{

 

}

 

private void button7_Click_1(object sender, EventArgs e)

{

Bitmap bmpSave = (Bitmap)pictureBox1.Image;

SaveFileDialog sfd = new SaveFileDialog();

sfd.DefaultExt = "bmp";

sfd.Filter = "JPEG files (*.jpg)|*.jpg|BMP files (*.bmp)|*.bmp";

if (sfd.ShowDialog() == DialogResult.OK)

bmpSave.Save(sfd.FileName, ImageFormat.Bmp);

}

 

private void saveFileDialog1_FileOk(object sender, CancelEventArgs e)

{

 

}

}

}


Приложение 2

 

Некоторые результаты работы программы:

 

Исходное изображение

Эффект негатива

Эффект черно-белого изображения

Эффект телевизионных помех

Эффект увеличения контрастности

Эффект случайно разбросанных квадратиков

Эффект деления изображения на 4 части

 



Поделиться:


Последнее изменение этой страницы: 2017-02-10; просмотров: 105; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.165.248.212 (0.569 с.)