113 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| using System;
 | |
| using System.Drawing;
 | |
| 
 | |
| namespace GoldPrinter
 | |
| {
 | |
| 	public class Caption : Printer
 | |
| 	{
 | |
| 		private string _text;
 | |
| 
 | |
| 		private int _maxRows;
 | |
| 
 | |
| 		private bool _hasborder;
 | |
| 
 | |
| 		public string Text
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return this._text;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				this._text = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public bool HasBorder
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return this._hasborder;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				this._hasborder = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public int MaxRows
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return this._maxRows;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				this._maxRows = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public Caption()
 | |
| 		{
 | |
| 			this._text = "";
 | |
| 			this._maxRows = 1;
 | |
| 			this._hasborder = false;
 | |
| 			this.Font = new Font("宋体", 13f, FontStyle.Italic);
 | |
| 			this.IsDrawAllPage = true;
 | |
| 		}
 | |
| 
 | |
| 		public Caption(string text) : this()
 | |
| 		{
 | |
| 			this._text = text;
 | |
| 		}
 | |
| 
 | |
| 		public override void Draw()
 | |
| 		{
 | |
| 			base.Draw();
 | |
| 			int num = base.PrinterMargins.X1;
 | |
| 			int num2 = base.PrinterMargins.Y1;
 | |
| 			num += base.MoveX;
 | |
| 			num2 += base.MoveY;
 | |
| 			int width = base.PrinterMargins.Width;
 | |
| 			int num3 = base.TextHeight(this._text);
 | |
| 			if (num3 > base.PrinterMargins.Height)
 | |
| 			{
 | |
| 				num3 = base.PrinterMargins.Height;
 | |
| 			}
 | |
| 			if (this._maxRows > 0)
 | |
| 			{
 | |
| 				if (num3 > this.Font.Height * this._maxRows)
 | |
| 				{
 | |
| 					num3 = this.Font.Height * this._maxRows;
 | |
| 				}
 | |
| 			}
 | |
| 			Rectangle rectangle = new Rectangle(num, num2, width, num3);
 | |
| 			StringFormat stringFormat = new StringFormat();
 | |
| 			stringFormat.Alignment = StringAlignment.Center;
 | |
| 			stringFormat.LineAlignment = StringAlignment.Center;
 | |
| 			rectangle.X = (base.PrinterMargins.Width - base.TextWidth(this.Text)) / 2 + base.PrinterMargins.Left + base.MoveX;
 | |
| 			rectangle.Y = num2;
 | |
| 			if (base.TextWidth(this.Text) < base.PrinterMargins.Width)
 | |
| 			{
 | |
| 				rectangle.Width = base.TextWidth(this.Text);
 | |
| 			}
 | |
| 			else
 | |
| 			{
 | |
| 				rectangle.Width = base.PrinterMargins.Width;
 | |
| 			}
 | |
| 			rectangle.Height = num3;
 | |
| 			base.Rectangle = rectangle;
 | |
| 			if (this._hasborder)
 | |
| 			{
 | |
| 				base.Graphics.DrawRectangle(base.Pen, base.Rectangle.X, base.Rectangle.Y, base.Rectangle.Width, base.Rectangle.Height);
 | |
| 			}
 | |
| 			rectangle.X--;
 | |
| 			rectangle.Y--;
 | |
| 			rectangle.Width += 2;
 | |
| 			rectangle.Height += 2;
 | |
| 			base.Graphics.DrawString(this._text, this.Font, base.Brush, rectangle, stringFormat);
 | |
| 			this.Height = num3;
 | |
| 		}
 | |
| 	}
 | |
| }
 |