Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка КГ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

Заключение

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

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

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

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

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

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

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

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

  1. 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)

{

}

}

}