手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#向图片添加水印的两种不同场景与解决方法
C#向图片添加水印的两种不同场景与解决方法
摘要:场景一也就是大家经常用的,一般是图片的4个角落,基于横纵坐标来添加。效果如下:添加水印方法staticvoidaddWatermarkTex...

场景一

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

效果如下:

C#向图片添加水印的两种不同场景与解决方法1

添加水印方法

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

场景二

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

效果图如下

C#向图片添加水印的两种不同场景与解决方法2

添加水印的方法

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#向图片添加水印的两种不同场景与解决方法】相关文章:

C#保存图片到数据库并读取显示图片的方法

解决C# winForm自定义鼠标样式的两种实现方法详解

提示出现unresolved external symbol _main的解决方法

C#中将ListView中数据导出到Excel的实例方法

C# 抓取网页内容的方法

C#实现的几种委托方式介绍

C# 调用C++写的dll的实现方法

C#操作txt文件,进行清空添加操作的小例子

c# 对cookies(增、删、改、查)的操作方法

C# DataGridView添加新行的2个方法

精品推荐
分类导航