c# 圖文添加文字斜水印

項目中有個添加水印的需求,須要給圖片鋪滿斜水印。spa

網上搜了半天全是添加在圖片上、下、左、右的案例。3d

因而按照網上的某一段案例本身修改了一些代碼。調試

 

 1                     Bitmap bitmap = new Bitmap(image);
 2                     int degree = 45;
 3                     //圖片的寬度與高度
 4                     int width = bitmap.Width, height = bitmap.Height;
 5                     //水印文字
 6                     string text = string.Format("僅供「{0}」使用", projectName);
 7                     Graphics g = Graphics.FromImage(bitmap);
 8                     g.DrawImage(bitmap, 0, 0);
 9                     g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
10                     g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
11                     g.DrawImage(image, new Rectangle(0, 0, width, height), 0, 0, width, height, GraphicsUnit.Pixel);
12                     Font crFont = new Font("微軟雅黑", 22, FontStyle.Bold);
13                     SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(60, 137, 131, 131));
14                     //將原點移動 到圖片中點
15                     g.TranslateTransform(0, height);
16                     //以原點爲中心 轉 -45度
17                     g.RotateTransform(-45);
18                     for (int i = 0; i < 50; i++)
19                     {
20                         g.DrawString(text, crFont, semiTransBrush, new PointF(0 - i * 300, 100 + i * 300));
21                         g.DrawString(text, crFont, semiTransBrush, new PointF(150 - i * 300, 500 + i * 300));
22                         g.DrawString(text, crFont, semiTransBrush, new PointF(650 - i * 300, 600 + i * 300));
23                     }
24                     //保存文件
25                     bitmap.Save(sImgPath, ImageFormat.Jpeg);
26                     return sImgPath;

 

原本想法是畫一個 g.DrawString從上至下的斜水印,鋪滿圖片左邊三分之一。code

再畫兩個g.DrawString各佔三分二,這樣水印會鋪滿整張圖片,效果也不錯。orm

但項目的需求是水印文字是動態變化的,致使水印長度會長會短,長了第一個水印的尾部會把第二個水印覆蓋掉一點。blog

這樣就很是難看,調試了幾天仍是沒有進展,最後只能畫三個水印,讓三條水印交錯不在一個水平線上,缺點就是不太鋪滿圖片。圖片

但願有高手有更簡便的方法能夠交流一下。string

下面是加完水印的效果圖it

 

相關文章
相關標籤/搜索