го просто тиснемо на кнопку «ѳре зображенняВ» (ріс.4.5.1):
В
Ріс.4.5.1
private void bGray_Click (object sender, EventArgs e)
{picture = new Bitmap (pictureBox1.BackgroundImage); bitmap_data; bitmap_pixels;
{
// Блокуємо ділянку в памяті_data = picture.LockBits (new Rectangle (0, 0, picture.Width, picture.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
// Отримуємо покажчик на перший піксель_pixels = bitmap_data.Scan0; * bitmap_pbitS = (byte *) bitmap_pixels.ToPointer ();
// Вказуємо, що крапка буде займати 3 байтаbytes_per_pixel = 3; cc_r, cc_g, cc_b, cc_gray; (int x = 0; x
{(int y = 0; y
{
// Обчислюємо покажчик на точку, яка відповідає координатам x, y * pixel_gr = (byte *) bitmap_pbitS + (y * bitmap_data.Stride) + (x * bytes_per_pixel);
// Прочитуємо 3 компоненти цвета_b = * pixel_gr; _g = * (pixel_gr + 1); _r = * (pixel_gr + 2);
// Обчислюємо серий_gray = (byte) Math.Round (cc_b * 0.3f + cc_g * 0.59f + cc_r * 0.11f);
// Встановлюємо в пам'яті компоненти кольору
* pixel_gr = cc_gray; _gr + +;
* pixel_gr = cc_gray; _gr + +;
* pixel_gr = cc_gray;
}
}. UnlockBits (bitmap_data);. BackgroundImage = picture;
}}
4.6 Перетворення зображення в негатив
Як і в попередньому випадку, все дуже просто, достатньо натиснути на В«НегативВ» і вуаля (ріс.4.6.1):
В
Ріс.4.6.1
private void bNegative_Click (object sender, EventArgs e)
{picture = new Bitmap (pictureBox1.BackgroundImage); bitmap_data; bitmap_pixels;
{
// Блокуємо ділянку в памяті_data = picture.LockBits (new Rectangle (0, 0, picture.Width, picture.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
// Отримуємо покажчик на перший піксель_pixels = bitmap_data.Scan0; * bitmap_pbitS = (byte *) bitmap_pixels.ToPointer ();
// Вказуємо, що крапка буде займати 3 байтаbytes_per_pixel = 3; cc_r, cc_g, cc_b; (int x = 0; x
{(int y = 0; y
{
// Обчислюємо покажчик на точку, яка відповідає координатам x, y * pixel_gr = (byte *) bitmap_pbitS + (y * bitmap_data.Stride) + (x * bytes_per_pixel);
// Прочитуємо 3 компоненти цвета_b = * pixel_gr; _g = * (pixel_gr + 1); _r = * (pixel_gr + 2);