Нарисуйте водяной знак в 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 может быть достаточно темной.