Используйте ColorMatrix для добавления водяного знака к изображению на C#
Пример объясняет, как добавить полупрозрачный водяной знак к изображению. Этот пример делает то же самое в немного другом и, вероятно, более эффективном способе. В этом примере используется следующий метод DrawWatermark.
// Копируем изображение водяного знака по изображению результата.
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.
