using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Drawing2D; using System.Linq; using System.Text; namespace TProduct.PumpGraph.Picture { public partial class LxpSeriesChart { #region 是否黑白显示 protected bool _isMonoColor = false; public bool IsMonoColor { get { return _isMonoColor; } set { _isMonoColor = value; } } #endregion #region 自定义背景色(默认白色) protected Color _backgroundColor = Color.White; public Color BackgroundColor { get { return _backgroundColor; } set { _backgroundColor = value; } } #endregion #region 绘制水印 string _waterMarkText = null; public void SetWaterMarkText(string text_content) { _waterMarkText = text_content; } string _waterMarkLogoPath = null; public void SetWaterMarkLogoFile(string file_path) { _waterMarkLogoPath = file_path; } protected Color _colorWaterMark = Color.FromArgb(50, Color.Blue); public Action PrintWaterMarkCb = null; private bool isPrintWaterMark = true ;//是否有水印 public bool IsPrintWaterMark { get { return isPrintWaterMark; } set { isPrintWaterMark = value; } } public void DrawWaterMark(Graphics g) { if (!isPrintWaterMark) return; //三种方式绘制水印 DrawWaterMarkText(g); DrawWaterMarkLogo(g); if (PrintWaterMarkCb != null) { PrintWaterMarkCb(g,this._imageWidth,this._imageHeight); } } protected void DrawWaterMarkText(Graphics g) { if (string.IsNullOrEmpty(_waterMarkText)) return; GraphicsState gs = g.Save(); using (Font fontText = new Font("Arial", 30, FontStyle.Bold)) using (SolidBrush drawBrush = new SolidBrush(_colorWaterMark)) { g.ResetTransform(); g.TranslateTransform(_imageWidth / 4, _imageHeight / 4 - 20); //设置旋转中心为文字中心 g.RotateTransform(25); g.DrawString(_waterMarkText, fontText, drawBrush, 0, 0); g.ResetTransform(); g.TranslateTransform(_imageWidth * 3 / 4 - 20, _imageHeight * 3 / 4 - 20); //设置旋转中心为文字中心 g.RotateTransform(25); g.DrawString(_waterMarkText, fontText, drawBrush, 0, 0); } g.Restore(gs); } protected void DrawWaterMarkLogo(Graphics g) { if (string.IsNullOrEmpty(_waterMarkLogoPath)) return; if (!System.IO.File.Exists(_waterMarkLogoPath)) { return; } var imgWaterMark = System.Drawing.Image.FromFile(_waterMarkLogoPath); //插入水印宽度和高度 int water_mark_image_width = imgWaterMark.Width; int water_mark_image_height = imgWaterMark.Height; //水印数量 int water_image_number_x = (int)(this._chartDiagramSize.Width / (water_mark_image_width * 2.5)); if (water_image_number_x < 0) water_image_number_x = 1; if (water_image_number_x > 3) water_image_number_x = 3; if (water_image_number_x <= 0) water_image_number_x = 1; int water_image_number_y = (int)(this._chartDiagramSize.Height / (water_mark_image_height * 4.0)); if (water_image_number_y < 0) water_image_number_y = 1; if (water_image_number_y > 3) water_image_number_y = 3; if (water_image_number_y <= 0) water_image_number_y = 1; //添加水印 for (int i = 0; i < water_image_number_x; i++) { for (int j = 0; j < water_image_number_y; j++) { RectangleF rt1 = new RectangleF( this._chartDiagramSize.Width * (i + 1) / (water_image_number_x + 1) - water_mark_image_width / 2, this._chartDiagramSize.Height * (j + 1) / (water_image_number_y + 1) - water_mark_image_height / 2, water_mark_image_width, water_mark_image_height); g.DrawImage(imgWaterMark, rt1); } } } #endregion } }