Урок 12. Графика в C#.

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

Основные характеристики изображения:
  1. Размер изображения в пикселях — может выражаться в виде количества пикселей по ширине и по высоте (800×600px, 1024×768px).
  2. Количество цветов в палитре (N) или глубина цвета (i: n=2i).
  3. Цветовое пространство (цветовая модель) — RGB, CMYK, XYZ, и др.
  4. Разрешение изображения — величина, определяющая количество точек (элементов растрового изображения) на единицу площади (или единицу длины).
Файлы для хранения точечных изображений включают информационные блоки, содержащие такие данные, как глубина цвета, количество точек в строке и количество строк в массиве. Такой файл может также содержать таблицу цветов (цветовую палитру). Таблица цветов ставит в соответствие числам из растрового образа определенные цвета. На приведенном ниже рисунке изображен точечный рисунок цветовой модели RGB, его представление в виде растрового образа и соответствующая таблица цветов. Каждая точка описывается 4-битным числом, поэтому палитра содержит 2^4 = 16 цветов. Каждый цвет в таблице представляется 24-битным числом: 8 бит для интенсивности красного, 8 бит для интенсивности зеленого и 8 бит для интенсивности синего. Числа отображаются в шестнадцатеричной системе счисления.
Стандартные растровые форматы графических файлов для хранения растровых изображений, поддерживаемые интерфейсом GDI+: BMP, TIFF, GIF, JPEG, PNG, EXIF.
В следующем примере кода демонстрируется создание нового экземпляра класса Bitmap из файла с помощью методов GetPixel и SetPixel для перекрашивания изображения. В примере также используются свойства PixelFormat, Width и Height. Пример представлен в виде приложения Windows Forms. На форме расположены управляющие элементы Label1, PictureBox1, PictureBox2 и Button1.
private void button1_Click(object sender, EventArgs e)
{
try
{
// Считывание изображения из файла.
Bitmap image1 = new Bitmap(@"I:\Rastr.jpg", true);
Bitmap image2 = new Bitmap(@"I:\Rastr.jpg", true);
int x, y;
pictureBox2.Image = image2;
// Двойной цикл по прямоугольной области изображения для изменения цвета
// граничных полос в зеленые
for (x = 0; x < image1.Width; x++)
{
for (y = 0; y < image1.Height; y++)
{
Color pixelColor = image1.GetPixel(x, y);
if ((x >= 0 && x <= 20) || (y >= 0 && y <= 22) || (x >= image1.Width - 28 && x <= image1.Width - 1))
{
Color newColor = Color.FromArgb(255, 0, 255, 0);
image1.SetPixel(x, y, newColor);
}
}
}
pictureBox1.Image = image1;
Label2.Text = "Размер изображения: " + image1.Width.ToString() + " X " + image1.Height.ToString() + " " + image1.PixelFormat.ToString();
}
catch (ArgumentException)
{
MessageBox.Show("Ошибка при чтении файла." +
"Проверьте правильность пути.");
}
}
Скачать программу