БлогNot. Visual C++: изменяем интенсивности RGB для загруженной в приложение картинки

Visual C++: изменяем интенсивности RGB для загруженной в приложение картинки

Небольшая утилитка позволяет отдельно изменить интенсивности красной, зелёной и синей цветовых компонент изображения, код вычисляет новые цвета пикселей на основе значений из трёх "бегунков" TrackBar, примерно вот так:

 if (!pictureBox1->Image) return;
 Bitmap^ bitmap1 = gcnew Bitmap(pictureBox1->Image);
 for (int x = 0; x < bitmap1->Width; x++) {
  for (int y = 0; y < bitmap1->Height; y++) {
   Color pixelColor = bitmap1->GetPixel(x, y);
   int R = pixelColor.R + pixelColor.R * trackBar1->Value / 100.;
   int G = pixelColor.G + pixelColor.G * trackBar2->Value / 100.;
   int B = pixelColor.B + pixelColor.B * trackBar3->Value / 100.;
   R = System::Math::Max(R, 0); R = System::Math::Min(R, 255);
   G = System::Math::Max(G, 0); G = System::Math::Min(G, 255);
   B = System::Math::Max(B, 0); B = System::Math::Min(B, 255);
   Color newColor = Color::FromArgb(R,G,B);
   bitmap1->SetPixel(x, y, newColor);
  }
 }
 pictureBox1->Image = bitmap1;

Можно сбросить рисунок к исходному состоянию и сохранить изменённый рисунок в формате PNG, JPEG или BMP.

Интерфейс построен как обычно в таких случаях на PictureBox, помещённом на Panel. Следует помнить, что стандартный SetPixel в .NET - не самое быстрое решение из возможных.

Вот скриншот приложения в работе, а далее прикреплён проект, написанный на C++/CLI в Visual Studio 2019.

скриншот приложения в работе
скриншот приложения в работе

 Скачать проект C++ Visual Studio 2019 в архиве .zip (8 Кб)

21.10.2020, 14:11 [1369 просмотров]


теги: программирование цвет графика c++/cli

К этой статье пока нет комментариев, Ваш будет первым