Ejemplo n.º 1
0
        /// <summary>
        /// 设置水印
        /// </summary>
        /// <param name="original"></param>
        /// <param name="watermark"></param>
        /// <returns></returns>
        public Image MakeWatermark(Image original, Watermark watermark)
        {
            //Bitmap b = new Bitmap(original.Width, original.Height, PixelFormat.Format24bppRgb);
            //b.SetResolution(original.HorizontalResolution, original.VerticalResolution);

            // 不加水印
            if (watermark.Ratio < 0)
            {
                return(original);
            }
            //当ratio大于1时,加的部分水印会在图片外面(不显示)
            Size markSize = new Size((int)Math.Round(watermark.Ratio * original.Width), (int)Math.Round(watermark.Ratio * original.Height));

            watermark.SetSize(markSize);

            switch (watermark.WatermarkType)
            {
            case WatermarkType.Text:
                //添加文字水印
                var textWm = watermark as TextWatermark;
                if (!string.IsNullOrEmpty(textWm.Text))
                {
                    textWm.HorizontalResolution = original.HorizontalResolution; // b.HorizontalResolution;
                    textWm.VerticalResolution   = original.VerticalResolution;   // b.VerticalResolution;
                    var            textMark = this.CreateTextWatermark(textWm);
                    ImageWatermark imageWm  = new ImageWatermark()
                    {
                        Alignment        = textWm.Alignment,
                        Alpha            = textWm.Alpha,
                        Image            = textMark,
                        MarginPercentage = textWm.MarginPercentage,
                        Ratio            = textWm.Ratio,
                    };
                    imageWm.SetSize(textWm.Size);
                    return(MakeImageWatermark(original, imageWm));
                }
                break;

            case WatermarkType.Image:
                return(MakeImageWatermark(original, watermark as ImageWatermark));

                break;

            default:
                break;
            }
            return(original);
        }