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<Graphics,int , int > 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
|
|
}
|
}
|