Пример #1
0
        private static void 加图印(Graphics g水印图, 图印参数 参数, int 图宽, int 图高)
        {
            if (参数.画啥 == 图形类别.图 && 参数.图印页 == null)
            {
                return;
            }
            Graphics g, g空 = g水印图;
            Bitmap   空背景 = null;

            if (参数.透明度波动 > 0)
            {
                空背景 = new Bitmap(图宽, 图高, PixelFormat.Format32bppArgb);
                g空  = Graphics.FromImage(空背景);
                g   = g空;
            }
            else
            {
                g = g水印图;
            }
            Bitmap 水印图   = null;
            PointF 图印中心点 = 参数.中心点 = new PointF(图宽 * 参数.X百分比, 图高 * 参数.Y百分比);
            int    短边长度  = 图宽 >= 图高 ? 图高 : 图宽;
            float  横间距   = 参数.横向百分比间距 * 图宽;

            横间距 = 横间距 > 33 ? 横间距 : 33;
            float 纵间距 = 参数.纵向百分比间距 * 图高;

            纵间距 = 纵间距 > 33 ? 纵间距 : 33;
            float 绘图矩形高度 = 短边长度 * 参数.大小百分比;

            绘图矩形高度 = 绘图矩形高度 < 33 ? 33 : 绘图矩形高度;
            float 绘图矩形宽度;
            float 字粗细 = 短边长度 * 参数.粗细 * 0.5f;
            Color 框颜色 = Color.FromArgb(参数.透明度, 参数.颜色);
            Pen   画框笔 = new Pen(框颜色, 字粗细);

            if (参数.画啥 == 图形类别.图)
            {
                水印图 = (Bitmap)参数.图印页.水印图;
                if (参数.图印页 == null || 水印图 == null)
                {
                    return;
                }
                绘图矩形宽度 = 绘图矩形高度 * 水印图.Width / 水印图.Height;
                参数.大小  = new SizeF(绘图矩形宽度, 绘图矩形高度);
                图像.调透明度(参数.图印页.原图, 水印图, 参数.透明度);
            }
            else
            {
                绘图矩形宽度 = 绘图矩形高度 * 参数.宽高比;
                参数.大小  = new SizeF(绘图矩形宽度, 绘图矩形高度);
            }



            if (参数.横向复制个数 > 0 && 参数.纵向复制个数 > 0)
            {
                for (int i = 0; i <= 参数.纵向复制个数; i++)
                {
                    for (int j = 0; j <= 参数.横向复制个数; j++)
                    {
                        PointF 新图片中心点 = new PointF(图印中心点.X + 横间距 * j, 图印中心点.Y + 纵间距 * i);
                        画图片(g, 新图片中心点, 参数.旋转角度, 水印图, 绘图矩形宽度, 绘图矩形高度, 参数.画啥, 画框笔);
                    }
                }
            }
            else
            {
                画图片(g, 图印中心点, 参数.旋转角度, 水印图, 绘图矩形宽度, 绘图矩形高度, 参数.画啥, 画框笔);
                if (参数.横向复制个数 > 0)
                {
                    for (int i = 1; i <= 参数.横向复制个数; i++)
                    {
                        图印中心点 = new PointF(图印中心点.X + 横间距, 图印中心点.Y);
                        画图片(g, 图印中心点, 参数.旋转角度, 水印图, 绘图矩形宽度, 绘图矩形高度, 参数.画啥, 画框笔);
                    }
                }
                else if (参数.纵向复制个数 > 0)
                {
                    for (int i = 1; i <= 参数.纵向复制个数; i++)
                    {
                        图印中心点 = new PointF(图印中心点.X, 图印中心点.Y + 纵间距);
                        画图片(g, 图印中心点, 参数.旋转角度, 水印图, 绘图矩形宽度, 绘图矩形高度, 参数.画啥, 画框笔);
                    }
                }
            }
            if (参数.透明度波动 > 0)
            {
                图像.颜色随机化(空背景, 参数.透明度波动);
                g水印图.DrawImage(空背景, 0, 0);
                g空.Dispose();
                空背景.Dispose();
            }
        }
Пример #2
0
 public 图印设置Tabpage(图印参数 参数)
 {
     本页参数      = 参数;
     BackColor = Color.White;
 }