C#基於兩種需求向圖片添加浮水印

來源:互聯網
上載者:User

標籤:

使用情境

        1、也就是大家經常用的,一般是圖片的4個角落,基於橫縱座標來添加。

        2、在圖片內基於固定位置,文字始終置中。剛開始我基於第一種情境來根據浮水印漢字的長度來計算座標,後來探索方法始終不可靠。現在是先在圖片固定地區(浮水印地區)畫一個矩形,然後再矩形內添加浮水印漢字,並使用畫刷保持文字置中。

 

情境一效果

 

 

情境二效果

 

情境一添加浮水印方法
static void addWatermarkText(Graphics picture,int fontsize, string _watermarkText, string _watermarkPosition, int _width, int _height)        {            int[] sizes = new int[] {32, 14, 12, 10, 8, 6, 4 };            Font crFont = null;            SizeF crSize = new SizeF();            crFont = new Font("微軟雅黑", fontsize, FontStyle.Bold);            crSize = picture.MeasureString(_watermarkText, crFont);            float xpos = 0;            float ypos = 0;            Color color =Color.Firebrick;            switch (_watermarkPosition)            {                case "WM_TOP_LEFT":                    xpos = ((float)_width * (float).01) + (crSize.Width / 2);                    ypos = (float)_height * (float).01;                    break;                case "WM_TOP_RIGHT":                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);                    ypos = (float)_height * (float).01;                    break;                case "WM_BOTTOM_RIGHT":                    xpos = ((float)_width * (float).99) - (crSize.Width / 2);                    ypos = ((float)_height * (float).99) - crSize.Height;                    break;                case "WM_BOTTOM_LEFT":                    xpos = ((float)_width * (float).01) + (crSize.Width / 2);                    ypos = ((float)_height * (float).99) - crSize.Height;                    break;                            }                        StringFormat StrFormat = new StringFormat();            StrFormat.Alignment = StringAlignment.Center;            SolidBrush semiTransBrush2 = new SolidBrush(Color.FromArgb(153, 0, 0, 0));//加陰影            picture.DrawString(_watermarkText, crFont, semiTransBrush2, xpos + 1, ypos + 1, StrFormat);            SolidBrush semiTransBrush = new SolidBrush(color);  //添加浮水印            picture.DrawString(_watermarkText, crFont, semiTransBrush, xpos, ypos, StrFormat);            semiTransBrush2.Dispose();            semiTransBrush.Dispose();        }

 

情境二添加浮水印方法
static void addWatermarkText(Graphics picture,string type, int fontsize, string _watermarkText)        {            //1、先畫矩形            RectangleF drawRect;            Color color;            if (type == "Top")            {                 drawRect = new RectangleF(73, 135, 450, 64);                 color = Color.FromArgb(255, 255, 255);            }            else            {                 drawRect = new RectangleF(194, 245, 250, 39);                 color = Color.FromArgb(244, 226, 38);            }                        //2、在基於矩形畫浮水印文字            Font crFont = null;            StringFormat StrFormat = new StringFormat();            StrFormat.Alignment = StringAlignment.Center;            crFont = new Font("微軟雅黑", fontsize, FontStyle.Bold);            SolidBrush semiTransBrush = new SolidBrush(color);  //添加浮水印            picture.DrawString(_watermarkText, crFont, semiTransBrush, drawRect, StrFormat);            semiTransBrush.Dispose();        }

 

總結

       和第一種方法比起來,第二種方法更直觀,更短小精悍,只需要在你需要添加浮水印的圖片上計算好固定座標然後先畫一個矩形,然後把浮水印漢字畫在矩形內,這樣不管浮水印漢字如何變化都可以在圖片固定位置置中。

C#基於兩種需求向圖片添加浮水印

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.