Нарисуйте водяной знак в C#

Пример Использование ColorMatrix для добавления водяного знака к изображению на C# показывает один способ добавления водяного знака к изображению. В этом примере показан другой метод, который эффективен и понятен. Это также позволяет вам легко изменить, насколько темным является водяной знак, чтобы вы могли определить, насколько он затеняет фоновое изображение.

Основной подход - использовать две кисти. Щетки имеют альфа-значения менее 255, чтобы они были полупрозрачными. Программа сначала рисует текст с помощью полупрозрачной черной кисти, а затем рисует ее снова, сдвигая два пикселя влево и вверх с помощью полупрозрачной белой кисти. Окончательное изображение слегка затемнено вдоль нижнего и правого краев текста и освещено на теле текста.

В этом примере используется следующий код для рисования водяных знаков с различными уровнями непрозрачности.

// Рисуем полупрозрачный текст.
private void Form1_Load(object sender, EventArgs e)
{
    Bitmap bm = new Bitmap(picSrc.Image);
    using (Graphics gr = Graphics.FromImage(bm))
    {
        using (StringFormat string_format = new StringFormat())
        {
            string_format.Alignment = StringAlignment.Center;

            int dy = (int)(gr.MeasureString("X", this.Font)
                .Height * 1.2);
            int x = bm.Width / 2;
            int y = 20;

            for (int opacity = 20; opacity <= 80; opacity += 10)
            {
                string txt = "OPACITY " + opacity.ToString();
                using (Brush brush = new SolidBrush(
                    Color.FromArgb(opacity, 0, 0, 0)))
                {
                    gr.DrawString(txt, this.Font,
                        brush, x, y, string_format);
                }
                using (Brush brush = new SolidBrush(
                    Color.FromArgb(opacity, 255, 255, 255)))
                {
                    gr.DrawString(txt, this.Font,
                        brush, x - 2, y - 2, string_format);
                }
                y += dy;
            }
        }

        picResult.Image = bm;
    }
}

Сначала код создает копию изображения слева и создает объект Graphics для работы с копией. Затем он создает объект StringFormat, который центрирует текст по горизонтали.

Далее код измеряет строку «X», чтобы он мог определить, насколько высок текст. Он устанавливает переменную dy для представления высоты строки, которую он будет использовать, и инициализирует x и y для размещения первой строки текста.

Затем код вводится в цикл, который использует opacitites 20, 30, 40, ..., 80. Для каждой непрозрачности программа рисует текст дважды, как описано выше, для создания водяного знака. Затем он добавляет dy в y, поэтому следующая строка сдвигается вниз и повторяет цикл.

Вы можете использовать изображение в верхней части сообщения, чтобы определить, какой уровень непрозрачности выглядит лучше всего. В зависимости от того, насколько очевидным вы хотите использовать водяной знак, непрозрачность 20 или 30 может быть достаточно темной.

Источник: http://csharphelper.com/blog/2015/11/draw-a-watermark-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector