Контрольные вопросы

Министерство образования и науки РФ

Северо-Кавказский Горно-металлургический

институт

(Государственный Технологический Университет)

 

Факультет: Информационных технологий

Кафедра: Автоматизированной обработки информации

 

Отчет по лабораторной работе №2

Выполнила:: Студентка группы ИВб 11-2

Глотова А. В.

Проверила: Кокоева Диана Шалваевна

Владикавказ 2014 г.


СОДЕРЖАНИЕ

 

Процесс работы программы.. 4

Контрольные вопросы.. 7

Приложение. 8

 


Задание: Создать программу, позволяющую выполнять аффинные преобразования над загруженным изображением.

Процесс работы программы

 

Программа написана на языке С#.

Для создания утилиты использованы :
1. Компонент Picturebox1 и Picturebox2 для загрузки изображения и показа результата преобразований.

2. Компоненты Button, по нажатию на которые будут осуществляться заданные действия, т. е. повороты изображения на заданные углы и отзеркаливание.

3. Компоненты OpenFileDialog1 и SaveFileDialog1 для организации открытия и сохранения изображения.

При запуске программы открывается форма, содержащая набор кнопок. Нажатие на «Открыть» вызывает метод Button1Click, в котором прописаны методы компонента OpenFileDialog1 по загрузке выбранного пользователем изображения из его личных папок. В качестве результата возвращается путь и имя указанной картинки. Нажатием на кнопку «Копировать» производим копирование исходного изображения в Picturebox2 (рис.1):

Рис.1. Копирование

 

При нажатии на «зеркало» мы увидит отраженное зеркально по вертикали изображение (рис.2):

Рис. 2. Зеркальное отображение

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

Рис. 3. Поворот на 90 градусов и его зеркальное отображение

Рис. 4. Поворот на 180 градусов и его зеркальное отображение

Рис. 5. Поворот на 270 градусов и его зеркальное отображение

 

 

Контрольные вопросы

1) Какой класс представляет изображения в виде матрицы точек?
Bitmap.

2) Каким образом можно скопировать изображение из Picturebox1 в Picturebox2?

 

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Width, Mas.Height);

for (int i = 0; i < Mas.Width - 1; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(i, j, Mas.GetPixel(i, j));

}

pictureBox2.Image = im;

 

3) Координаты какого из свойств необходимо изменить для поворота картинки?

Для изменения поворота изображения следует менять координаты свойств SetPixel и GetPixel.

4) Каков формат свойства SetPixel?

SetPixel(номер строки, номер столбца, цвет) – указывает, в какую позицию установить данный цвет.

5) Каков формат свойства GetPixel?

GetPixel( носер строки, номер столбца) – указывает, откуда брать цвет.

 

Приложение

 

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace aokg2

{

public partial class Form1 : Form

{

Image image;

public Form1()

{

InitializeComponent();

}

 

private void button1_Click(object sender, EventArgs e)

{

OpenFileDialog openPhotoDialog;

openPhotoDialog = new OpenFileDialog();

openPhotoDialog.Filter = "*.jpg;*.gif;*.bmp;|*.jpg;*.gif;*.bmp";

 

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

{

image = Image.FromFile(openPhotoDialog.FileName);

pictureBox1.Image = image;

}

}

//сохранить

private void button2_Click(object sender, EventArgs e)

{

SaveFileDialog savePthotoDialog;

savePthotoDialog = new SaveFileDialog();

savePthotoDialog.Filter = "*.jpg;*.gif;*.bmp;|*.jpg;*.gif;*.bmp";

image = pictureBox1.Image;

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

{

image.Save(savePthotoDialog.FileName + ".bmp");

}

}

// копировать

private void button3_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Width, Mas.Height);

for (int i = 0; i < Mas.Width - 1; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(i, j, Mas.GetPixel(i, j));

}

pictureBox2.Image = im;

}

private void button10_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Height, Mas.Width);

for (int i = 0; i < Mas.Width; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(j, i, Mas.GetPixel(i, j));

}

pictureBox2.Image = im;

}

 

private void button8_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Height, Mas.Width);

 

for (int i = 0; i < Mas.Width; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(Mas.Height - j - 1, Mas.Width - i - 1, Mas.GetPixel(i, j));

}

pictureBox2.Image = im;

}

 

private void button9_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Width, Mas.Height);

 

for (int i = 0; i < Mas.Width; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(i, j, Mas.GetPixel(Mas.Width - i - 1, Mas.Height - j - 1));

}

pictureBox1.Image = im;

}

 

private void button6_Click(object sender, EventArgs e)

{

Bitmap mas = new Bitmap(image);

Bitmap im = new Bitmap(mas.Height, mas.Width);

for (int i = 0; i < im.Height; i++)

{

for (int j = 0; j < im.Width; j++)

{

im.SetPixel(j, im.Height - i - 1, mas.GetPixel(i, j));

}

}

pictureBox1.Image = im;

}

 

private void button5_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Width, Mas.Height);

 

for (int i = 0; i < Mas.Width; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(i, j, Mas.GetPixel(Mas.Width - i - 1, Mas.Height - j - 1));

}

pictureBox2.Image = mirror(im);

}

//зеркало

private Bitmap mirror(Bitmap img)

{

img = new Bitmap(pictureBox1.Image);

Bitmap im = new Bitmap(img.Width, img.Height);

int k = img.Width - 1;

for (int i = 0; i < im.Height; i++)

{

for (int j = 0; j < im.Width; j++)

{

im.SetPixel(k, i, img.GetPixel(j, i));

k--;

}

k = img.Width - 1;

}

return im;

}

 

private void button7_Click(object sender, EventArgs e)

{

pictureBox2.Image = mirror((Bitmap)pictureBox1.Image);

}

 

private void button4_Click(object sender, EventArgs e)

{

Bitmap Mas = new Bitmap(image);

Bitmap im = new Bitmap(Mas.Height, Mas.Width);

for (int i = 0; i < Mas.Width; i++)

for (int j = 0; j < Mas.Height; j++)

{

im.SetPixel(Mas.Height-j-1, i, Mas.GetPixel(i, j));

}

pictureBox1.Image = im;

}

}

}