Я делаю приложение с водяными знаками для изображений, используя C # Windows Form в Visual Studio 2017. На большинство моих кодов ссылаются с https://www.c -sharpcorner.com / article / build-a-simple-watermarking-utility-in-C-Sharp / , что мне очень помогло.Однако я считаю, что коды для положения водяного знака слишком ограничены, поэтому я добавил новый набор кодов, чтобы обеспечить больший выбор позиции для водяного знака.(Вверху слева, вверху справа, внизу слева, внизу справа и т. Д.)
Однако есть некоторые проблемы с кодами, которые я использую для своей «верхней» позиции водяного знака.По этой ссылке ( Положение изображения с водяным знаком [asp.net] ) и по этой ссылке (https://www.codeproject.com/Articles/31538/%2FArticles%2F31538%2FWatermarker-Embedding-image-and-text-watermarks) я обнаружил, что код для позиции «Вверху слева» представляет собой одно целочисленное значение для X иЗначения Y.
Проблема заключается в том, что моя позиция водяного знака не находится на самом верху изображения (хотя я использовал коды из приведенных выше ссылок). Кроме того, я понял, чтоЧем больше размер текста текста водяного знака, который я установил, тем ниже будет положение водяного знака. Как я могу решить эту проблему? Я не хотел бы, чтобы пользователь выбирал параметр «Слева вверху» и видел результирующую позицию водяного знака, котораянаходится почти в центре изображения, потому что размер текста большой.
Код, который я использую для «Верхнего левого угла»:
if (rbHorl.Checked == true && rbVerl.Checked == true)
{
X = (int)10;
Y = (int)10;
}
// X (represents Left) and Y represents (Top)
На этом изображении размер текста водяного знака, который я установил, равен 8. Позиция на самом деле не сверху. Я ожидаю увидеть его в крайнем верхнем углу изображения. Положение водяного знака работает так же хорошо длямой «нижний» постион.
Коды, которые я использую для «Внизу слева»:
else if (rbHorl.Checked == true && rbVerr.Checked == true)
{
X = (int)10;
Y = (int)(pictureBox.Image.Height - sz.Height) - 10;
}
//rbHorl represents Left and rbVerr represents Top
Я переключился между моими значениями X и Y, поэтому мой X - это ось Y и наоборот.
На этом изображении я установил размер текста водяного знака равным 72. Положение водяного знака даже меньше, чем размер 8. Он не остается наверхний левый угол изображения, как я и ожидал.
Как видите, текстовое поле также увеличивается в размере по мере увеличения размера текста водяного знака.Я был бы признателен, если бы я мог также получить справку о том, как сохранить фиксированный размер текстового поля при увеличении размера текста.Шрифт и размер текста водяного знака устанавливаются с помощью fontDialog, который уже встроен в Visual Studios.