示例#1
0
        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;
        }