VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > Python基础教程 >
  • c# 图文添加文字斜水印

项目中有个添加水印的需求,需要给图片铺满斜水印。

网上搜了半天全是添加在图片上、下、左、右的案例。

于是按照网上的某一段案例自己修改了一些代码。

 

复制代码
 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从上至下的斜水印,铺满图片左边三分之一。

再画两个g.DrawString各占三分二,这样水印会铺满整张图片,效果也不错。

但项目的需求是水印文字是动态变化的,导致水印长度会长会短,长了第一个水印的尾部会把第二个水印覆盖掉一点。

这样就非常难看,调试了几天还是没有进展,最后只能画三个水印,让三条水印交错不在一个水平线上,缺点就是不太铺满图片。

希望有高手有更简便的方法可以交流一下。

下面是加完水印的效果图

 

github https://github.com/hano7758

相关教程