c# 图文添加文字斜水印
2024-08-31 15:39:21
项目中有个添加水印的需求,需要给图片铺满斜水印。
网上搜了半天全是添加在图片上、下、左、右的案例。
于是按照网上的某一段案例自己修改了一些代码。
Bitmap bitmap = new Bitmap(image);
int degree = ;
//图片的宽度与高度
int width = bitmap.Width, height = bitmap.Height;
//水印文字
string text = string.Format("仅供“{0}”使用", projectName);
Graphics g = Graphics.FromImage(bitmap);
g.DrawImage(bitmap, , );
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
g.DrawImage(image, new Rectangle(, , width, height), , , width, height, GraphicsUnit.Pixel);
Font crFont = new Font("微软雅黑", , FontStyle.Bold);
SolidBrush semiTransBrush = new SolidBrush(Color.FromArgb(, , , ));
//将原点移动 到图片中点
g.TranslateTransform(, height);
//以原点为中心 转 -45度
g.RotateTransform(-);
for (int i = ; i < ; i++)
{
g.DrawString(text, crFont, semiTransBrush, new PointF( - i * , + i * ));
g.DrawString(text, crFont, semiTransBrush, new PointF( - i * , + i * ));
g.DrawString(text, crFont, semiTransBrush, new PointF( - i * , + i * ));
}
//保存文件
bitmap.Save(sImgPath, ImageFormat.Jpeg);
return sImgPath;
本来想法是画一个 g.DrawString从上至下的斜水印,铺满图片左边三分之一。
再画两个g.DrawString各占三分二,这样水印会铺满整张图片,效果也不错。
但项目的需求是水印文字是动态变化的,导致水印长度会长会短,长了第一个水印的尾部会把第二个水印覆盖掉一点。
这样就非常难看,调试了几天还是没有进展,最后只能画三个水印,让三条水印交错不在一个水平线上,缺点就是不太铺满图片。
希望有高手有更简便的方法可以交流一下。
下面是加完水印的效果图
最新文章
- es查询命令备份(只需要网页9200/_plugin/head/就可以访问)
- 数据字典生成工具之旅(5):DocX组件读取与写入Word
- 使用Redux管理你的React应用(转载)
- Monkey测试4——Monkey命令行可用的全部选项
- Druid 介绍及配置
- iOS:OC Lib:MagicalRecord
- codeforces B. Friends and Presents(二分+容斥)
- UITableViewCell实现3D缩放动画
- ssh的学习
- 定义Java类的数组的问题
- [TPYBoard-Micropython之会python就能做硬件 3] 制作电子时钟
- 使用requireJs的方法
- 10位时间戳使用moment转化为日期
- 使用JsonProperty Attribute修改返回json
- springboot打包去除资源文件,启动时指定配置文件位置,使用log4j2替换默认logback
- HTML5服务器消息推送(java版)
- Spark学习之路 (七)Spark 运行流程
- 使用SqlBulkCopy批量插入数据,测试20万条用时5秒
- mysql中字符串类型char(n)和varchar(n)的区别
- python文本 maketrans和translate
热门文章
- 客户端技术的一点思考(数据存储用SQLite, XMPP通讯用Gloox, Web交互用LibCurl, 数据打包用Protocol Buffer, socket通讯用boost asio)
- Win8 Metro(C#)数字图像处理--2.38Hough变换直线检测
- 什么是AIFF?
- memcached对中文key的支持问题
- TIME WINAPI
- 使用WebBrowser并调用网页中的JS函数
- 开源中国的 IT 公司开源软件整理计划介绍
- XPath概述
- C++中的new,operator new与placement new
- 台电P89s mini root教程