最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2016年09月23日 09:28:40   投稿:daisy  
這篇文章給大家介紹了兩種大家可能需要的功能,利用C#實現(xiàn)不同需求的向圖片添加水印的方法,文章通過效果圖和示例代碼介紹的很詳細,有需要的朋友們可以參考借鑒。

場景一

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

效果如下:

添加水印方法

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

場景二

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

效果圖如下

添加水印的方法

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é)

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

相關(guān)文章

  • C#實現(xiàn)獲取鼠標句柄的方法

    C#實現(xiàn)獲取鼠標句柄的方法

    這篇文章主要介紹了C#實現(xiàn)獲取鼠標句柄的方法,詳細的講述了實現(xiàn)獲取鼠標句柄的具體步驟及實現(xiàn)方法,并附有完整的實例源碼供大家參考,需要的朋友可以參考下
    2014-09-09
  • unity實現(xiàn)UI元素跟隨3D物體

    unity實現(xiàn)UI元素跟隨3D物體

    這篇文章主要為大家詳細介紹了unity實現(xiàn)UI元素跟隨3D物體,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • C#中異步和多線程的區(qū)別介紹

    C#中異步和多線程的區(qū)別介紹

    這篇文章介紹了C#中異步和多線程的區(qū)別,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • C#實現(xiàn)獲取機器碼的示例詳解

    C#實現(xiàn)獲取機器碼的示例詳解

    這篇文章主要為大家詳細介紹了如何利用C#實現(xiàn)獲取機器碼的功能,文中的示例代碼講解詳細,對我們學習C#有一定的幫助,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-12-12
  • C#編寫發(fā)送郵件組件

    C#編寫發(fā)送郵件組件

    本文給大家分享的是使用C#編寫的發(fā)送郵件的組件,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-06-06
  • C#利用delegate實現(xiàn)Javascript的each方法

    C#利用delegate實現(xiàn)Javascript的each方法

    這篇文章主要為大家介紹了介紹了C#利用delegate實現(xiàn)Javascript的each方法,感興趣的朋友可以參考一下
    2016-01-01
  • C#如何獲取計算機信息

    C#如何獲取計算機信息

    這篇文章主要為大家詳細介紹了C#獲取計算機信息的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 基于NET?Core?的Nuget包制作、發(fā)布和運用流程解析(完整過程)

    基于NET?Core?的Nuget包制作、發(fā)布和運用流程解析(完整過程)

    這篇文章主要介紹了基于NET?Core?的Nuget包制作、發(fā)布和運用流程,本文通過圖文并茂的形式給大家介紹了Nuget包制作過程,感興趣的朋友跟隨小編一起看看吧
    2022-02-02
  • c#中object、var和dynamic的區(qū)別小結(jié)

    c#中object、var和dynamic的區(qū)別小結(jié)

    這篇文章主要給大家介紹了關(guān)于c#中object、var和dynamic的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • C#獲取Description特性的擴展類詳解

    C#獲取Description特性的擴展類詳解

    這篇文章主要和大家詳細介紹一下C#獲取Description特性的擴展類,文中的示例代碼講解詳細,對我們學習有一定的幫助,需要的可以參考一下
    2022-06-06

最新評論

嘉黎县| 鸡西市| 菏泽市| 桃园县| 和平区| 大悟县| 晋城| 延安市| 绥阳县| 龙口市| 滦南县| 仁化县| 清徐县| 泗阳县| 胶州市| 大方县| 博客| 新民市| 通化县| 穆棱市| 鸡东县| 卢湾区| 开封市| 上虞市| 仪征市| 新巴尔虎左旗| 三明市| 汝城县| 黑河市| 门头沟区| 海淀区| 德保县| 奉贤区| 桃园县| 九江市| 昂仁县| 浦县| 温州市| 邵东县| 穆棱市| 芦溪县|