国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C# > 正文

C#向圖片添加水印的兩種不同場(chǎng)景與解決方法

2019-10-29 21:21:01
字體:
供稿:網(wǎng)友

場(chǎng)景一

也就是大家經(jīng)常用的,一般是圖片的4個(gè)角落,基于橫縱坐標(biāo)來添加。

效果如下:

c,圖片添加水印,圖片加水印,圖片水印,指定坐標(biāo)

添加水印方法

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();  }

場(chǎng)景二

在圖片內(nèi)基于固定位置,文字始終居中。剛開始我基于第一種場(chǎng)景來根據(jù)水印漢字的長(zhǎng)度來計(jì)算坐標(biāo),后來發(fā)現(xiàn)方法始終不可靠?,F(xiàn)在是先在圖片固定區(qū)域(水印區(qū)域)畫一個(gè)矩形,然后再矩形內(nèi)添加水印漢字,并使用畫刷保持文字居中。

效果圖如下

c,圖片添加水印,圖片加水印,圖片水印,指定坐標(biāo)

添加水印的方法

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();  }

總結(jié)

和第一種方法比起來,第二種方法更直觀,更短小精悍,只需要在你需要添加水印的圖片上計(jì)算好固定坐標(biāo)然后先畫一個(gè)矩形,然后把水印漢字畫在矩形內(nèi),這樣不管水印漢字如何變化都可以在圖片固定位置居中。以上就是這篇文章的全部?jī)?nèi)容,希望能對(duì)大家的學(xué)習(xí)或者工作帶來一定的幫助。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到c#教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 湘西| 施甸县| 建始县| 萨迦县| 金山区| 吴旗县| 桑植县| 天全县| 和田县| 东台市| 托克逊县| 什邡市| 育儿| 新蔡县| 双江| 曲靖市| 水城县| 天镇县| 启东市| 七台河市| 昭平县| 尼勒克县| 舟曲县| 古丈县| 文昌市| 余江县| 高安市| 新竹县| 海南省| 长沙县| 密山市| 吴旗县| 乐东| 南宫市| 余江县| 滨海县| 中卫市| 贡觉县| 英山县| 旌德县| 淮安市|