Отчет по лабораторной работе №3
Министерство образования и науки РФ
Северо-Кавказский Горно-металлургический
институт
(Государственный Технологический Университет)
Факультет: Информационных технологий
Кафедра: Автоматизированной обработки информации
Отчет по лабораторной работе №3
Выполнила:: Студентка группы ИВб 11-2
Глотова А. В.
Проверила: Кокоева Диана Шалваевна
Владикавказ 2014 г.
СОДЕРЖАНИЕ
Процесс работы программы.. 4
Контрольные вопросы.. 8
Приложение. 9
Задание: Создать программу, выполняющую разбиение загруженного рисунка на компоненты цветовой модели RGB.
Процесс работы программы
Программа написана на языке С#.
Для создания утилиты использованы :
1. Компонент Picturebox1 и Picturebox2 для загрузки изображения и показа результата преобразований.
2. Компоненты Button, по нажатию на которые будут осуществляться заданные действия, т. е..
3. Компоненты OpenFileDialog1 и SaveFileDialog1 для организации открытия и сохранения изображения.
При запуске программы открывается форма, содержащая набор кнопок. Нажатие на «Открыть» вызывает метод Button1Click, в котором прописаны методы компонента OpenFileDialog1 по загрузке выбранного пользователем изображения из его личных папок. В качестве результата возвращается путь и имя указанной картинки.
Нажатием на кнопку, подписанную соответствующей компонентой цветовой модели RGB, мы получаем перекрашенное изображение:
Рис.1. Красный цвет
Рис.2. Зеленый цвет
Рис.3. Синий цвет
Также в лабораторной работе представлена возможность получения компонент цветовой модели CMYK с помощью смешения цветов RGB – модели:
Рис.4. Голубой цвет.
Рис.5. Розовый цвет
Рис.6. Желтый цвет
В качестве дополнения программа позволяет производить инверсию цветов:
Рис. 7. Инверсия цвета
Контрольные вопросы
1) Какие цветовые модели вам известны?
Аддитивного формирования оттенков – RGB, - и субтрактивного – CMYK.
2) Чем отличаются аддитивные цветовые модели от субтрактивных?
В аддитивных моделях новые цвета получаются посредством сложения основного цвета с черным. В субтрактивных для получения новых цветов основные цвета вычитаются из белого.
3) Что такое инверсия?
Изменение цветов на противоположные.
4) Какой метод класса Color возвращает значения полученных компонент цветовой модели RGB?
FromArgb
5) Как получить компоненту цветовой модели из массива пикселей?
GetPixel и PixelFormat
Приложение
//red
private void button11_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon=Mas.GetPixel(i,j);
Mas.SetPixel(i,j,Color.FromArgb(fon.R,0,0));
}
pictureBox2.Image = Mas;
}
//green
private void button12_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(0,fon.G,0));
}
pictureBox2.Image = Mas;
}
//blue
private void button13_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(0, 0,fon.B));
}
pictureBox2.Image = Mas;
}
//yellow
private void button14_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(fon.R, fon.G, 0));
}
pictureBox2.Image = Mas;
}
//magenta
private void button15_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(fon.R,0,fon.B));
}
pictureBox2.Image = Mas;
}
//cyan
private void button16_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(0, fon.G, fon.B));
}
pictureBox2.Image = Mas;
}
//INVERSE
private void button17_Click(object sender, EventArgs e)
{
Bitmap Mas = new Bitmap(image);
for (int i = 0; i < Mas.Width; i++)
for (int j = 0; j < Mas.Height; j++)
{
Color fon = Mas.GetPixel(i, j);
Mas.SetPixel(i, j, Color.FromArgb(255-fon.B, 255-fon.G, 255-fon.R));
}
pictureBox2.Image = Mas;
}