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(); } }
public 图印设置Tabpage(图印参数 参数) { 本页参数 = 参数; BackColor = Color.White; }