首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解决我的水印位置问题?

如何解决我的水印位置问题?
EN

Stack Overflow用户
提问于 2019-01-18 15:43:40
回答 1查看 606关注 0票数 0

我正在使用VisualStudio2017中的C# Windows窗体进行图像水印应用程序。我的大部分代码都是从https://www.c-sharpcorner.com/article/build-a-simple-watermarking-utility-in-C-Sharp/中引用的,这对我帮助很大。但是,我发现为水印位置提供的代码过于有限,因此我添加了一组新的代码,以便为水印提供更多的位置选择。(左上角、右上角、左下角、右下角等)

然而,有一些问题,我使用的代码,我的‘顶部’水印位置。根据这个链接(Watermarking image position[asp.net])和这个链接(https://www.codeproject.com/Articles/31538/%2FArticles%2F31538%2FWatermarker-Embedding-image-and-text-watermarks),我发现“左上角”位置的代码是X和Y值的单个整数值。

问题是,我的水印位置实际上并不在图像的“顶部”(即使我使用了来自上述链接的代码)。同时,我也意识到我设置的水印文本的文本大小越大,水印的位置就越低。我怎样才能解决这个问题?我不希望用户选择一个“左上角”选项,并看到所产生的水印位置,该位置几乎位于图像的中心,因为文本大小很大。

我为“左上角”使用的代码:

代码语言:javascript
复制
if (rbHorl.Checked == true && rbVerl.Checked == true)
        {
            X = (int)10;
            Y = (int)10;
        }
// X (represents Left) and Y represents (Top) 

在这张图片中,我设置的水印文本的大小是8。这个位置实际上并不在顶部。我希望在图像的最上面的角落看到它。水印位置与我的“底部”位置一样好。

我为“左下角”使用的代码:

代码语言:javascript
复制
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中构建。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-25 10:19:10

我玩弄数字,并设法使用以下代码将水印位置放在“左上角”:

代码语言:javascript
复制
if (rbHorl.Checked == true && rbVerl.Checked == true)//VTop Left
        {
            X = (int)10;
            Y = (int)-30;
        }

我也意识到我把自己和我的按钮的标签混淆了,因此错误的代码用于左上角,中间和右边的位置。

至于在增加水印文本大小时不放大文本框中的文本,我从现有代码中删除了以下代码行(注释掉):

代码语言:javascript
复制
private void btnSetfont_Click(object sender, EventArgs e)
    {
        //defailt the current font and color to that 
        //used in the watermark textbox
        fontDialog1.ShowColor = true;
        //fontDialog1.Font = tbWatermarktext.Font;
        fontDialog1.Color = tbWatermarktext.ForeColor;

if(fontDialog1.ShowDialog() != DialogResult.Cancel)
        {
            myFont = fontDialog1.Font;
            myWatermarkColor = fontDialog1.Color;
            //tbWatermarktext.Font = fontDialog1.Font;
            tbWatermarktext.ForeColor = fontDialog1.Color;
        }
    }

尽管已经解决了上述两个问题,但如果水印文本的大小设置得太大,那么水印的位置就会降低。在此图像中,水印文本大小为72,将使水印的“左上角”位置看起来类似于中间的左侧位置:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54257217

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档