使用场景

1、也就是大家经常用的,一般是图片的4个角落,基于横纵坐标来添加。

2、在图片内基于固定位置,文字始终居中。刚开始我基于第一种场景来根据水印汉字的长度来计算坐标,后来发现方法始终不可靠。现在是先在图片固定区域(水印区域)画一个矩形,然后再矩形内添加水印汉字,并使用画刷保持文字居中。

场景一效果

场景二效果

场景一添加水印方法

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

场景二添加水印方法

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

总结

和第一种方法比起来,第二种方法更直观,更短小精悍,只需要在你需要添加水印的图片上计算好固定坐标然后先画一个矩形,然后把水印汉字画在矩形内,这样不管水印汉字如何变化都可以在图片固定位置居中。

C#基于两种需求向图片添加水印相关推荐

  1. ML之kNN(两种):基于两种kNN(平均回归、加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能

    ML之kNN(两种):基于两种kNN(平均回归.加权回归)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能 目录 输出结果 设计思路 核心代码 输出结果 Bosto ...

  2. iOS 两种不同的图片无限轮播

    代码地址如下: http://www.demodashi.com/demo/11608.html 前记 其实想写这个关于无限轮播的记录已经很久很久了,只是没什么时间,这只是一个借口,正如:时间就像海绵 ...

  3. php上传同一张图片,两种php实现图片上传的方法_PHP

    图片上传在项目中经常用到,几乎没有任何一个项目可以脱离图片或者是文件上传.本篇我在这向大家介绍两种常规的上传方式.(注:在这里我们仅仅是对功能的实现,不去做过多的前端的样式) 一.利用form表单上传 ...

  4. OFD格式文件怎么转图片?分享两种OFD转图片方法

    OFD格式的文件怎么转换成图片呢?大家在办公中如果收到对方发来的OFD格式文件时,不知道怎么打开文件,从而影响我们的正常工作进度.实际上,这种格式的文件一般是需要使用相关的阅读工具才能够打开,但是我们 ...

  5. 【手把手教】Android开发两种方式实现图片的上传下载

    Android 图片上传的应用场景 在Android开发中,很多时候我们需要进行图片,文件的上传下载,最直接的一个应用场景就是用户头像的保存与切换,以及像即时通讯中的图片发送等任何在App中设计图片的 ...

  6. iOS两种设置启动图片的方式

    设置启动界面有两种方式,都在工程配置界面中,如图: 推荐用Launch Screen File方式,优点是只需要在storyboard中设置一张图片就可以,而且还可以加各种控件排版,比较灵活. Lau ...

  7. linux 浏览器重定向,nginx 重定向浏览器url跳转和不跳转两种需求

    背景:在日常运维中经常会碰到需要从一个链接跳转到另一个链接的情况,此类需求分为两种情况,一种是浏览器url变,一种是浏览器url不变. 一.Url变,使用nginx rewirte模块 rewrite ...

  8. 简单的实现图片预览, 通过原生ajax以及 jQuery两种方法实现图片预览,有更好的办法可以留言喔...................

    1.原生写ajax实现图片预览: 结构:       <input type="file"> <img src="" alt="&q ...

  9. 两种方法实现图片懒加载

    懒加载的实现原理 图片的加载是由src引起的,当对src赋值时,浏览器就会请求图片资源.根据这个原理,我们使用HTML5 的data-xxx属性来储存图片的路径,在需要加载图片的时候,将data-xx ...

最新文章

  1. Swift 闭包表达式
  2. 查询ecshop网站代码排查方法_功能测试——查询测试
  3. 网络爬虫:基于对象持久化实现爬虫现场快速还原
  4. exchange客户端不能正常登陆
  5. Blazor VS 传统Web应用程序
  6. LeetCode 965单值二叉树-简单
  7. SpringBoot时间格式化的5种方法!
  8. string 中的offset_【Java基础】String常量的长度有限制吗?
  9. Intel超线程技术 Hyper-Threading Technology (6) - 后期增强(Nehalem/Haswell/Skylake)
  10. C语言学习笔记---结构体中的字符数组和字符指针
  11. python list函数使用总结_python——list总结
  12. MPLS解决路由黑洞实验分析(华为设备)
  13. iOS UIImageView设置为圆形
  14. two day python基础知识
  15. 人工智能python营_AI人工智能训练营
  16. retrofit+rxjava+mvp网络请求数据
  17. 怎么设置计算机桌面字体大小,Win7桌面字体大小怎么调?Win7系统电脑桌面字体大小设置方法...
  18. 在centos上安装pycharm
  19. 怎样检测php语法错误,检查php的语法错误
  20. HTML5利用canvas绘制太极图案

热门文章

  1. dnfdpl服务器维护了,2019DNF心悦DPL赛事活动地址 强化器和时空石没了
  2. python django mysql_python测试开发django-10.django连接mysql
  3. 电脑开机卡住了怎么办_苹果电脑忘记开机密码怎么办?一段代码轻松解决
  4. cad2016中选择全图字体怎么操作_给几十页PPT换字体,我同事居然花了半个小时?明明3秒就能搞定...
  5. 清除tomcat缓存
  6. 电脑打字学习_新手如何学会电脑打字 走上盲打之路
  7. 归并排序执行次数_一文了解C/C++经典排序算法
  8. 图像分割(一)--综述
  9. EP Limited: 开源ECG分析软件介绍
  10. 2022年考研数据结构_5 树