Используйте ColorMatrix для добавления водяного знака к изображению на C#
Пример
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
// Копируем изображение водяного знака по изображению результата. private void DrawWatermark(Bitmap watermark_bm, Bitmap result_bm, int x, int y) { // Создаем ColorMatrix, которая умножает // альфа-компонент на 0,5. ColorMatrix color_matrix = new ColorMatrix(); color_matrix.Matrix33 = 0.5f; // Создаем ImageAttributes, который использует ColorMatrix. ImageAttributes image_attributes = new ImageAttributes(); image_attributes.SetColorMatrices(color_matrix, null); // Создаем пиксели того же цвета, что и // один в верхнем левом прозрачном. watermark_bm.MakeTransparent(watermark_bm.GetPixel(0, 0)); // Нарисуем изображение с помощью ColorMatrix. using (Graphics gr = Graphics.FromImage(result_bm)) { Rectangle rect = new Rectangle(x, y, watermark_bm.Width, watermark_bm.Height); gr.DrawImage(watermark_bm, rect, 0, 0, watermark_bm.Width, watermark_bm.Height, GraphicsUnit.Pixel, image_attributes); } } |
Класс ColorMatrix содержит матрицу коэффициентов, которые умножаются на красные, зеленые и синие цветовые компоненты каждого пикселя в изображении. Запись [3, 3] представляет собой масштабный коэффициент, по которому умножается альфа-компонент пикселя.
В этом примере объект ColorMatrix имеет значение [3, 3], установленное в 0.5, поэтому он умножает альфа-компонент каждого пикселя на 0,5, делая его прозрачным на 50%. Программа создает объект ImageAttributes, который использует ColorMatrix.