public void Decorate(ImageDecoratorContext context) { WatermarkDecoratorSettings settings = new WatermarkDecoratorSettings(context.Settings); if (string.IsNullOrEmpty(settings.Text)) { return; } Bitmap bitmap = new Bitmap(context.Image.Width, context.Image.Height); using (Graphics g = Graphics.FromImage(bitmap)) { g.DrawImage(context.Image, 0, 0, context.Image.Width, context.Image.Height); Font font = new Font(settings.FontFamily, settings.FontSize * (96f / 72f), GraphicsUnit.Pixel); SizeF sizef = g.MeasureString(settings.Text, font); int x = 0; int y = 0; switch (settings.Position) { case (WatermarkPosition.TopLeft): break; case (WatermarkPosition.TopRight): x = Convert.ToInt32(Math.Max(bitmap.Width - sizef.Width - 2, 0)); break; case (WatermarkPosition.Centered): x = Convert.ToInt32(Math.Max((bitmap.Width / 2) - (sizef.Width / 2), 0)); y = Convert.ToInt32(Math.Max((bitmap.Height / 2) - (sizef.Height / 2), 0)); break; case (WatermarkPosition.BottomLeft): y = Convert.ToInt32(Math.Max(bitmap.Height - sizef.Height, 0)); break; case (WatermarkPosition.BottomRight): x = Convert.ToInt32(Math.Max(bitmap.Width - sizef.Width - 2, 0)); y = Convert.ToInt32(Math.Max(bitmap.Height - sizef.Height, 0)); break; } g.DrawString(settings.Text, font, new SolidBrush(Color.FromArgb(153, 0, 0, 0)), x, y); g.DrawString(settings.Text, font, new SolidBrush(Color.FromArgb(153, 255, 255, 255)), x - 1, y - 1); } context.Image = bitmap; }
public void Decorate(ImageDecoratorContext context) { WatermarkDecoratorSettings settings = new WatermarkDecoratorSettings(context.Settings); if (string.IsNullOrEmpty(settings.Text)) return; Bitmap bitmap = new Bitmap(context.Image.Width, context.Image.Height); using (Graphics g = Graphics.FromImage(bitmap)) { g.DrawImage(context.Image, 0, 0, context.Image.Width, context.Image.Height); Font font = new Font(settings.FontFamily, settings.FontSize * (96f / 72f), GraphicsUnit.Pixel); SizeF sizef = g.MeasureString(settings.Text, font); int x = 0; int y = 0; switch (settings.Position) { case (WatermarkPosition.TopLeft): break; case (WatermarkPosition.TopRight): x = Convert.ToInt32(Math.Max(bitmap.Width - sizef.Width - 2, 0)); break; case (WatermarkPosition.Centered): x = Convert.ToInt32(Math.Max((bitmap.Width / 2) - (sizef.Width / 2), 0)); y = Convert.ToInt32(Math.Max((bitmap.Height / 2) - (sizef.Height / 2), 0)); break; case (WatermarkPosition.BottomLeft): y = Convert.ToInt32(Math.Max(bitmap.Height - sizef.Height, 0)); break; case (WatermarkPosition.BottomRight): x = Convert.ToInt32(Math.Max(bitmap.Width - sizef.Width - 2, 0)); y = Convert.ToInt32(Math.Max(bitmap.Height - sizef.Height, 0)); break; } g.DrawString(settings.Text, font, new SolidBrush(Color.FromArgb(153, 0, 0, 0)), x, y); g.DrawString(settings.Text, font, new SolidBrush(Color.FromArgb(153, 255, 255, 255)), x - 1, y - 1); } context.Image = bitmap; }