//// <summary> /// 加水印文字 /// </summary> /// <param name="picture">imge 对象</param> /// <param name="_watermarkText">水印文字内容</param> /// <param name="_watermarkPosition">水印位置</param> /// <param name="_width">被加水印图片的宽</param> /// <param name="_height">被加水印图片的高</param> private static void addWatermarkText(Graphics picture, string _watermarkText, string _watermarkPosition, int _width, int _height) { int[] sizes = new int[] { 16, 14, 12, 10, 8, 6, 4 }; Font crFont = null; SizeF crSize = new SizeF(); for (int i = 0; i < 7; i++) { crFont = new Font("arial", sizes[i], FontStyle.Bold); crSize = picture.MeasureString(_watermarkText, crFont);
if ((ushort)crSize.Width < (ushort)_width) break; }
float xpos = 0; float ypos = 0;
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; case "WM_BOTTOM_CENTER": xpos = ((float)_width / 2); ypos = ((float)_height * (float).99) - crSize.Height; break; case "WM_CENTER": xpos = ((float)_width / 2); ypos = ((float)_height / 2) - 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.FromArgb(153, 255, 255, 255)); picture.DrawString(_watermarkText, crFont, semiTransBrush, xpos, ypos, StrFormat);
semiTransBrush2.Dispose(); semiTransBrush.Dispose(); }
|