Наложение полупрозрачного изображения - C#

Узнай цену своей работы

Формулировка задачи:

Функции передается 2 изображения (Bitmap) - фон и наложение. Итогом её работы должно стать новое изображение, сложенное из данных двух. Второе должно быть "поверх" фона, то есть накладываться на него, при частичной прозрачности нужно получить промежуточный цвет пикселя, зависящий от цвета и альфа-канала накладываемого изображения и цвета фона. То есть - чем более прозрачно накладываемое изображение, тем более проявляется цвет фона. Сама функция написана, вопрос только в том, как получить этот цвет. Есть для этого какие-то алгоритмы/готовые функции? Пробовал пару формул, но результат не подходящий - максимум, что получилось - полное наложение. Заранее спасибо за помощь

Решение задачи: «Наложение полупрозрачного изображения»

textual
Листинг программы
 private Bitmap ImageAdditions(Bitmap image, Bitmap image2)
        {           
            Bitmap bmp = new Bitmap(image.Width, image.Height);
            Color im, fon;
            int iR, iG, iB;
            for (int i = 0; i < bmp.Width; i++)
                for (int j = 0; j < bmp.Height; j++)
                {
                    fon = image2.GetPixel(i, j);
                    im = image.GetPixel(i, j);
                    iR = fon.R * (255 - im.A) / 255 + im.R * im.A / 255;
                    iG = fon.G * (255 - im.A) / 255 + im.G * im.A / 255;
                    iB = fon.B * (255 - im.A) / 255 + im.B * im.A / 255;
                    bmp.SetPixel(i, j, Color.FromArgb(Math.Max(fon.A, im.A), iR * (255 - fon.A) / 255 + fon.R * fon.A / 255, iG * (255 - fon.A) / 255 + fon.G * fon.A / 255, iB * (255 - fon.A) / 255 + fon.B * fon.A / 255));
                    
                }
            return bmp;
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5