public void 拷贝(文印参数 参数) { 文本 = 参数.文本; X百分比 = 参数.X百分比; Y百分比 = 参数.Y百分比; 大小百分比 = 参数.大小百分比; 透明度 = 参数.透明度; 字体 = 参数.字体; 颜色 = 参数.颜色; 旋转角度 = 参数.旋转角度; 粗体 = 参数.粗体; 斜体 = 参数.斜体; 划线 = 参数.划线; 除线 = 参数.除线; 横向复制个数 = 参数.横向复制个数; 纵向复制个数 = 参数.纵向复制个数; 横向百分比间距 = 参数.横向百分比间距; 纵向百分比间距 = 参数.纵向百分比间距; 所属设置页 = 参数.所属设置页; }
private static void 加文印(Graphics g水印图, 文印参数 参数, int 图宽, int 图高) { if (参数.文本.Length == 0) { return; } Graphics g, g空 = g水印图; Bitmap 空背景 = null; if (参数.透明度波动 > 0) { 空背景 = new Bitmap(图宽, 图高, PixelFormat.Format32bppArgb); g空 = Graphics.FromImage(空背景); g = g空; } else { g = g水印图; } PointF 文本中心点 = 参数.中心点 = new PointF(图宽 * 参数.X百分比, 图高 * 参数.Y百分比); string 待绘文本 = 日期时间替换(参数.文本); int 短边长度 = 图宽 >= 图高 ? 图高 : 图宽; float 字体大小 = 短边长度 * 参数.大小百分比 * 0.8f; if (字体大小 < 11) { 字体大小 = 11; } Font 字体 = new Font(参数.字体, 字体大小, 参数.粗体 | 参数.斜体 | 参数.划线 | 参数.除线); SizeF 文本大小 = 参数.大小 = g.MeasureString(待绘文本, 字体); PointF 文本位置 = new PointF(-文本大小.Width / 2, -文本大小.Height / 2); Brush 画刷 = new SolidBrush(Color.FromArgb(参数.透明度, 参数.颜色)); float 横间距 = 参数.横向百分比间距 * 图宽; 横间距 = 横间距 > 7 ? 横间距 : 7; float 纵间距 = 参数.纵向百分比间距 * 图高; 纵间距 = 纵间距 > 7 ? 纵间距 : 7; 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; Text = 参数.文本.Length > 4 ? 参数.文本.Substring(0, 4) : 参数.文本; }