847 lines
20 KiB
C#
847 lines
20 KiB
C#
using System;
|
||
using System.Data;
|
||
using System.Drawing;
|
||
using System.Drawing.Printing;
|
||
using System.Windows.Forms;
|
||
|
||
namespace GoldPrinter
|
||
{
|
||
public class MisGoldPrinter : IDisposable
|
||
{
|
||
private const int CON_SPACE_TITLE_CAPTION = 5;
|
||
|
||
private const int CON_SPACE_CAPTION_TOP = 20;
|
||
|
||
private const int CON_SPACE_HEADER_BODY = 5;
|
||
|
||
private const int CON_SPACE_BODY_FOOTER = 5;
|
||
|
||
private int X;
|
||
|
||
private int Y;
|
||
|
||
private int Width;
|
||
|
||
private float Scale = 1f;
|
||
|
||
private int mCurrentPageIndex;
|
||
|
||
private int mCurrentRowIndex;
|
||
|
||
private Graphics mGraphics;
|
||
|
||
private Printer mPrinter;
|
||
|
||
private PrintDocument mPrintDocument;
|
||
|
||
private PrinterMargins mPrinterMargins;
|
||
|
||
private Sewing _sewing;
|
||
|
||
private bool _isOnlySingleColor = true;
|
||
|
||
public Color BackColor = Color.White;
|
||
|
||
private int _rowsPerPage = -1;
|
||
|
||
private bool _isSubTotalPerPage = false;
|
||
|
||
private string _subTotalColsList = "";
|
||
|
||
private bool _isSewingLine = false;
|
||
|
||
private bool _isPrinterMargins = false;
|
||
|
||
private GridBorderFlag _gridBorder = GridBorderFlag.Double;
|
||
|
||
private Title _title;
|
||
|
||
private Caption _caption;
|
||
|
||
private Top _top;
|
||
|
||
private Header _header;
|
||
|
||
private MultiHeader _multiHeader;
|
||
|
||
private Body _body;
|
||
|
||
protected Footer _footer;
|
||
|
||
private Bottom _bottom;
|
||
|
||
public Sewing Sewing
|
||
{
|
||
get
|
||
{
|
||
return this._sewing;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
this._sewing = value;
|
||
}
|
||
else
|
||
{
|
||
this._sewing.Margin = 0;
|
||
}
|
||
}
|
||
}
|
||
|
||
public string DocumentName
|
||
{
|
||
get
|
||
{
|
||
return this.mPrintDocument.DocumentName;
|
||
}
|
||
set
|
||
{
|
||
this.mPrintDocument.DocumentName = value;
|
||
}
|
||
}
|
||
|
||
public int RowsPerPage
|
||
{
|
||
get
|
||
{
|
||
return this._rowsPerPage;
|
||
}
|
||
set
|
||
{
|
||
this._rowsPerPage = value;
|
||
}
|
||
}
|
||
|
||
public bool IsSubTotalPerPage
|
||
{
|
||
get
|
||
{
|
||
return this._isSubTotalPerPage;
|
||
}
|
||
set
|
||
{
|
||
this._isSubTotalPerPage = value;
|
||
}
|
||
}
|
||
|
||
public string SubTotalColsList
|
||
{
|
||
get
|
||
{
|
||
return this._subTotalColsList;
|
||
}
|
||
set
|
||
{
|
||
this._subTotalColsList = value;
|
||
}
|
||
}
|
||
|
||
public bool IsSewingLine
|
||
{
|
||
get
|
||
{
|
||
return this._isSewingLine;
|
||
}
|
||
set
|
||
{
|
||
this._isSewingLine = value;
|
||
}
|
||
}
|
||
|
||
public bool IsPrinterMargins
|
||
{
|
||
get
|
||
{
|
||
return this._isPrinterMargins;
|
||
}
|
||
set
|
||
{
|
||
this._isPrinterMargins = value;
|
||
}
|
||
}
|
||
|
||
public GridBorderFlag GridBorder
|
||
{
|
||
get
|
||
{
|
||
return this._gridBorder;
|
||
}
|
||
set
|
||
{
|
||
this._gridBorder = value;
|
||
}
|
||
}
|
||
|
||
public object Title
|
||
{
|
||
get
|
||
{
|
||
return this._title;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String")
|
||
{
|
||
if (this._title == null)
|
||
{
|
||
this._title = new Title();
|
||
}
|
||
this._title.Text = (string)value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Title")
|
||
{
|
||
this._title = (Title)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Caption
|
||
{
|
||
get
|
||
{
|
||
return this._caption;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String")
|
||
{
|
||
if (this._caption == null)
|
||
{
|
||
this._caption = new Caption();
|
||
}
|
||
this._caption.Text = (string)value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Caption")
|
||
{
|
||
this._caption = (Caption)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Top
|
||
{
|
||
get
|
||
{
|
||
return this._top;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String" || value.GetType().ToString() == "System.String[]")
|
||
{
|
||
if (this._top == null)
|
||
{
|
||
this._top = new Top();
|
||
}
|
||
this._top.DataSource = value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Top")
|
||
{
|
||
this._top = (Top)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Bottom
|
||
{
|
||
get
|
||
{
|
||
return this._bottom;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String" || value.GetType().ToString() == "System.String[]")
|
||
{
|
||
if (this._bottom == null)
|
||
{
|
||
this._bottom = new Bottom();
|
||
}
|
||
this._bottom.DataSource = (string)value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Bottom")
|
||
{
|
||
this._bottom = (Bottom)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Header
|
||
{
|
||
get
|
||
{
|
||
return this._header;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String[]" || value.GetType().ToString() == "System.String[,]" || value.GetType().ToString() == "System.Data.DataTable")
|
||
{
|
||
if (this._header == null)
|
||
{
|
||
this._header = new Header();
|
||
}
|
||
this._header.DataSource = value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Header")
|
||
{
|
||
this._header = (Header)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Footer
|
||
{
|
||
get
|
||
{
|
||
return this._footer;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String[]" || value.GetType().ToString() == "System.String[,]" || value.GetType().ToString() == "System.Data.DataTable")
|
||
{
|
||
if (this._footer == null)
|
||
{
|
||
this._footer = new Footer();
|
||
}
|
||
this._footer.DataSource = value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Footer")
|
||
{
|
||
this._footer = (Footer)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object MultiHeader
|
||
{
|
||
get
|
||
{
|
||
return this._multiHeader;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String[]" || value.GetType().ToString() == "System.String[,]" || value.GetType().ToString() == "System.Data.DataTable")
|
||
{
|
||
if (this._multiHeader == null)
|
||
{
|
||
this._multiHeader = new MultiHeader();
|
||
}
|
||
this._multiHeader.DataSource = value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.MultiHeader")
|
||
{
|
||
this._multiHeader = (MultiHeader)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object Body
|
||
{
|
||
get
|
||
{
|
||
return this._body;
|
||
}
|
||
set
|
||
{
|
||
if (value != null)
|
||
{
|
||
if (value.GetType().ToString() == "System.String[]" || value.GetType().ToString() == "System.String[,]" || value.GetType().ToString() == "System.Data.DataTable")
|
||
{
|
||
if (this._body == null)
|
||
{
|
||
this._body = new Body();
|
||
}
|
||
this._body.DataSource = value;
|
||
}
|
||
else if (value.GetType().ToString() == "GoldPrinter.Body")
|
||
{
|
||
this._body = (Body)value;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
public object DataSource
|
||
{
|
||
get
|
||
{
|
||
return this._body.DataSource;
|
||
}
|
||
set
|
||
{
|
||
this._body.DataSource = value;
|
||
}
|
||
}
|
||
|
||
public MisGoldPrinter() : this(false)
|
||
{
|
||
}
|
||
|
||
public MisGoldPrinter(bool p_IsLandscape)
|
||
{
|
||
PrinterSingleton.Reset();
|
||
this.mCurrentPageIndex = 1;
|
||
this.mCurrentRowIndex = 0;
|
||
this.mPrintDocument = PrinterSingleton.PrintDocument;
|
||
this.mPrintDocument.DefaultPageSettings.Landscape = p_IsLandscape;
|
||
this.mPrinterMargins = PrinterSingleton.PrinterMargins;
|
||
this.mPrintDocument.DocumentName = "MIS金质打印通,欢迎使用!";
|
||
this._sewing = new Sewing(30, SewingDirectionFlag.Left);
|
||
this.mPrinter = new Printer();
|
||
this._body = new Body();
|
||
}
|
||
|
||
public virtual void Dispose()
|
||
{
|
||
try
|
||
{
|
||
this.mGraphics.Dispose();
|
||
this.mPrintDocument.Dispose();
|
||
}
|
||
catch
|
||
{
|
||
}
|
||
}
|
||
|
||
public PageSettings PageSetup()
|
||
{
|
||
PrinterPageSetting printerPageSetting = new PrinterPageSetting(this.mPrintDocument);
|
||
printerPageSetting.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
|
||
PageSettings defaultPageSettings = this.mPrintDocument.DefaultPageSettings;
|
||
PageSettings pageSettings = printerPageSetting.ShowPageSetupDialog();
|
||
if (defaultPageSettings != pageSettings)
|
||
{
|
||
PrinterSingleton.PrintDocument = this.mPrintDocument;
|
||
this.mPrinterMargins = new PrinterMargins(this.mPrintDocument);
|
||
PrinterSingleton.PrinterMargins = this.mPrinterMargins;
|
||
}
|
||
return pageSettings;
|
||
}
|
||
|
||
public PrinterSettings Print()
|
||
{
|
||
this.mCurrentPageIndex = 1;
|
||
this.mCurrentRowIndex = 0;
|
||
PrinterPageSetting printerPageSetting = new PrinterPageSetting(this.mPrintDocument);
|
||
printerPageSetting.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
|
||
return printerPageSetting.ShowPrintSetupDialog();
|
||
}
|
||
|
||
public void Preview()
|
||
{
|
||
this.mCurrentPageIndex = 1;
|
||
this.mCurrentRowIndex = 0;
|
||
PrinterPageSetting printerPageSetting = new PrinterPageSetting(this.mPrintDocument);
|
||
printerPageSetting.PrintPage += new PrintPageDelegate(this.PrintPageEventHandler);
|
||
printerPageSetting.ImportExcelValue = new ImportExcelDelegate(this.ImportExcelMethodHandler);
|
||
printerPageSetting.ShowPrintPreviewDialog();
|
||
}
|
||
|
||
public void ImportExcelMethodHandler(object obj, ImportExcelArgs ev)
|
||
{
|
||
ExcelAccess excelAccess = new ExcelAccess();
|
||
excelAccess.Open();
|
||
excelAccess.MergeCells(1, 1, 1, this._body.Cols);
|
||
excelAccess.SetFont(1, 1, 1, this._body.Cols, this._title.Font);
|
||
excelAccess.SetCellText(1, 1, 1, this._body.Cols, this._title.Text);
|
||
excelAccess.SetCellText((DataTable)this.DataSource, 3, 1, true);
|
||
FileDialog fileDialog = new SaveFileDialog();
|
||
fileDialog.AddExtension = true;
|
||
fileDialog.DefaultExt = ".xls";
|
||
fileDialog.Title = "保存到Excel文件";
|
||
fileDialog.Filter = "Microsoft Office Excel 工作簿(*.xls)|*.xls|模板(*.xlt)|*.xlt";
|
||
if (fileDialog.ShowDialog() == DialogResult.OK)
|
||
{
|
||
if (excelAccess.SaveAs(fileDialog.FileName, true))
|
||
{
|
||
MessageBox.Show("数据成功保存到Excel文件!", "GoldPrinter", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
|
||
}
|
||
}
|
||
fileDialog.Dispose();
|
||
excelAccess.Close();
|
||
}
|
||
|
||
private void PrintPageEventHandler(object obj, PrintPageEventArgs ev)
|
||
{
|
||
Graphics graphics = ev.Graphics;
|
||
this.mGraphics = graphics;
|
||
try
|
||
{
|
||
bool flag = this.Draw(graphics);
|
||
if (flag)
|
||
{
|
||
ev.HasMorePages = true;
|
||
this.mCurrentPageIndex++;
|
||
}
|
||
else
|
||
{
|
||
ev.HasMorePages = false;
|
||
this.mCurrentPageIndex = 1;
|
||
this.mCurrentRowIndex = 0;
|
||
}
|
||
}
|
||
catch (Exception )
|
||
{
|
||
}
|
||
}
|
||
|
||
private void OutObject(Printer outer)
|
||
{
|
||
if (outer != null)
|
||
{
|
||
outer.Graphics = this.mGraphics;
|
||
outer.Rectangle = new Rectangle(this.X, this.Y, this.Width, outer.Height);
|
||
if (this._isOnlySingleColor)
|
||
{
|
||
outer.Pen = Pens.Black;
|
||
outer.Brush = Brushes.Black;
|
||
}
|
||
outer.Draw();
|
||
this.Y += outer.Rectangle.Height;
|
||
}
|
||
}
|
||
|
||
private bool Draw(Graphics g)
|
||
{
|
||
bool flag = false;
|
||
if (this._body.Rows < 0)
|
||
{
|
||
throw new Exception("打印主要网格不能为空,请用Body设置!");
|
||
}
|
||
this.mPrinter.Graphics = g;
|
||
this.mPrinter.PrintDocument = this.mPrintDocument;
|
||
this.mPrinter.Sewing = this.Sewing;
|
||
this.mPrinter.PrinterMargins = this.mPrinterMargins;
|
||
this.Y = this.mPrinter.PrinterMargins.Top;
|
||
this.X = this.mPrinter.PrinterMargins.Left;
|
||
this.Width = this.mPrinter.PrinterMargins.Width;
|
||
this.DrawPrinterMargins(this.mPrinter);
|
||
this.DrawSewing(this.mPrinter);
|
||
if (this._title != null && (this.mCurrentPageIndex == 1 || this._title.IsDrawAllPage))
|
||
{
|
||
this._title.PrinterMargins = this.mPrinterMargins;
|
||
this.OutObject(this._title);
|
||
}
|
||
if (this._caption != null && (this.mCurrentPageIndex == 1 || this._caption.IsDrawAllPage))
|
||
{
|
||
this._caption.MoveY = 0;
|
||
if (this._title != null && (this.mCurrentPageIndex == 1 || this._title.IsDrawAllPage))
|
||
{
|
||
this._caption.MoveY = this._title.Height + 5;
|
||
}
|
||
this._caption.PrinterMargins = this.mPrinterMargins;
|
||
this.OutObject(this._caption);
|
||
}
|
||
if (this._title != null || this._caption != null)
|
||
{
|
||
this.Y += 20;
|
||
}
|
||
int num = 0;
|
||
int i;
|
||
if (!this._body.IsAverageColsWidth)
|
||
{
|
||
for (i = 0; i < this._body.ColsWidth.Length; i++)
|
||
{
|
||
num += this._body.ColsWidth[i];
|
||
}
|
||
if (num > this.mPrinterMargins.Width)
|
||
{
|
||
this.Scale = (float)(this.mPrinterMargins.Width / num);
|
||
}
|
||
else
|
||
{
|
||
this.Width = num;
|
||
this.X += (this.mPrinterMargins.Width - this.Width) / 2;
|
||
}
|
||
}
|
||
if (this._top != null && (this.mCurrentPageIndex == 1 || this._top.IsDrawAllPage))
|
||
{
|
||
this.OutObject(this._top);
|
||
}
|
||
if (this._header != null && (this.mCurrentPageIndex == 1 || this._header.IsDrawAllPage))
|
||
{
|
||
this.OutObject(this._header);
|
||
}
|
||
if ((this._top != null || this._header != null) && (this.mCurrentPageIndex == 1 || (this._top != null && this._top.IsDrawAllPage) || (this._header != null && this._header.IsDrawAllPage)))
|
||
{
|
||
this.Y += 5;
|
||
}
|
||
if (this._multiHeader != null && (this.mCurrentPageIndex == 1 || this._multiHeader.IsDrawAllPage))
|
||
{
|
||
this.OutObject(this._multiHeader);
|
||
}
|
||
float num2 = (float)(this.mPrinter.PrinterMargins.Height - (this.Y - this.mPrinter.PrinterMargins.Top));
|
||
if (this._footer != null && this._footer.IsDrawAllPage)
|
||
{
|
||
num2 -= (float)this._footer.Height;
|
||
}
|
||
if (this._bottom != null && this._bottom.IsDrawAllPage)
|
||
{
|
||
num2 -= (float)this._bottom.Height;
|
||
}
|
||
if (num2 < 0f)
|
||
{
|
||
throw new Exception("预留给打印主要网格的空间太小,请适当调整!");
|
||
}
|
||
int num3 = (int)(num2 / (float)this._body.RowHeight);
|
||
if (this.RowsPerPage > 0 && this.RowsPerPage < num3)
|
||
{
|
||
num3 = this.RowsPerPage;
|
||
}
|
||
if (this.IsSubTotalPerPage)
|
||
{
|
||
num3--;
|
||
}
|
||
Body body;
|
||
if (this.RowsPerPage > 0 && this.RowsPerPage < num3)
|
||
{
|
||
body = new Body(num3, this._body.Cols);
|
||
}
|
||
else
|
||
{
|
||
if (num3 > this._body.Rows - this.mCurrentRowIndex)
|
||
{
|
||
num3 = this._body.Rows - this.mCurrentRowIndex;
|
||
}
|
||
body = new Body(num3, this._body.Cols);
|
||
}
|
||
string[,] array = new string[num3, this._body.Cols];
|
||
i = 0;
|
||
while (i < num3 && this.mCurrentRowIndex < this._body.Rows)
|
||
{
|
||
for (int j = 0; j < this._body.Cols; j++)
|
||
{
|
||
array[i, j] = this._body.GetText(this.mCurrentRowIndex, j);
|
||
}
|
||
this.mCurrentRowIndex++;
|
||
i++;
|
||
}
|
||
body.GridText = array;
|
||
body.ColsAlignString = this._body.ColsAlignString;
|
||
body.ColsWidth = this._body.ColsWidth;
|
||
body.IsAverageColsWidth = this._body.IsAverageColsWidth;
|
||
body.Font = (Font)this._body.Font.Clone();
|
||
this.OutObject(body);
|
||
if (this.mCurrentRowIndex < this._body.Rows)
|
||
{
|
||
flag = true;
|
||
}
|
||
if (this._isSubTotalPerPage && this._subTotalColsList != "")
|
||
{
|
||
try
|
||
{
|
||
MultiHeader multiHeader = new MultiHeader(1, this._body.Cols);
|
||
multiHeader.ColsWidth = this._body.ColsWidth;
|
||
multiHeader.Graphics = g;
|
||
multiHeader.PrintDocument = this.mPrintDocument;
|
||
multiHeader.Sewing = this._sewing;
|
||
multiHeader.Rectangle = new Rectangle(this.X, this.Y, this.Width, multiHeader.Height);
|
||
multiHeader.SetText(0, 0, "本页小计");
|
||
multiHeader.SetText(0, 1, "本页小计");
|
||
string[] array2 = this._subTotalColsList.Split(new char[]
|
||
{
|
||
';'
|
||
});
|
||
double num4 = 0.0;
|
||
for (i = 0; i < array2.Length; i++)
|
||
{
|
||
int num5 = int.Parse(array2[i]);
|
||
for (int j = 0; j < array.GetLength(0); j++)
|
||
{
|
||
num4 += double.Parse(array[j, num5]);
|
||
}
|
||
multiHeader.SetText(0, num5, num4.ToString());
|
||
num4 = 0.0;
|
||
}
|
||
multiHeader.Draw();
|
||
this.Y += multiHeader.Height;
|
||
}
|
||
catch
|
||
{
|
||
}
|
||
}
|
||
if ((this._footer != null || this._bottom != null) && (this.mCurrentPageIndex == 1 || (this._top != null && this._top.IsDrawAllPage) || (this._header != null && this._header.IsDrawAllPage)))
|
||
{
|
||
this.Y += 5;
|
||
}
|
||
if (this._footer != null)
|
||
{
|
||
if (!flag || this._footer.IsDrawAllPage)
|
||
{
|
||
if (this._footer.IsDrawAllPage)
|
||
{
|
||
this.OutObject(this._footer);
|
||
}
|
||
}
|
||
}
|
||
if (this._bottom != null)
|
||
{
|
||
if (!flag || this._bottom.IsDrawAllPage)
|
||
{
|
||
if (this._bottom.IsDrawAllPage)
|
||
{
|
||
this.OutObject(this._bottom);
|
||
}
|
||
else
|
||
{
|
||
num2 = (float)(this.mPrinter.PrinterMargins.Height - (this.Y - this.mPrinter.PrinterMargins.Top));
|
||
if (num2 < (float)this._bottom.Height)
|
||
{
|
||
flag = true;
|
||
}
|
||
else
|
||
{
|
||
this.OutObject(this._bottom);
|
||
}
|
||
}
|
||
}
|
||
}
|
||
this.DrawBorder(g, this._multiHeader, body);
|
||
body.Dispose();
|
||
body = null;
|
||
return flag;
|
||
}
|
||
|
||
private void DrawPrinterMargins(Printer printer)
|
||
{
|
||
if (this.IsPrinterMargins)
|
||
{
|
||
printer.DrawPrinterMargins();
|
||
}
|
||
}
|
||
|
||
private void DrawSewing(Printer printer)
|
||
{
|
||
if (this.IsSewingLine && this.Sewing.Margin > 0)
|
||
{
|
||
if (this.Sewing.LineLen <= 0)
|
||
{
|
||
if (this.Sewing.SewingDirection == SewingDirectionFlag.Left)
|
||
{
|
||
this.Sewing.LineLen = printer.PageHeight;
|
||
}
|
||
else if (this.Sewing.SewingDirection == SewingDirectionFlag.Top)
|
||
{
|
||
this.Sewing.LineLen = printer.PageWidth;
|
||
}
|
||
}
|
||
printer.Sewing = this.Sewing;
|
||
printer.DrawSewing();
|
||
}
|
||
}
|
||
|
||
private void DrawBorder(Graphics g, MultiHeader multiHeader, Body body)
|
||
{
|
||
int width = body.Rectangle.Width;
|
||
int num = body.Rectangle.Height;
|
||
int x;
|
||
int y;
|
||
if (multiHeader != null)
|
||
{
|
||
x = multiHeader.Rectangle.X;
|
||
y = multiHeader.Rectangle.Y;
|
||
num += multiHeader.Rectangle.Height;
|
||
}
|
||
else
|
||
{
|
||
x = body.Rectangle.X;
|
||
y = body.Rectangle.Y;
|
||
}
|
||
if (this.IsSubTotalPerPage)
|
||
{
|
||
MultiHeader multiHeader2 = new MultiHeader(1, 1);
|
||
num += multiHeader2.RowHeight;
|
||
}
|
||
Rectangle rectangle = new Rectangle(x, y, width, num);
|
||
Pen pen = new Pen(Color.Black, 1f);
|
||
DrawRectangle drawRectangle = new DrawRectangle();
|
||
drawRectangle.Graphics = g;
|
||
drawRectangle.Rectangle = rectangle;
|
||
drawRectangle.Pen = pen;
|
||
switch (this.GridBorder)
|
||
{
|
||
case GridBorderFlag.Single:
|
||
drawRectangle.Draw();
|
||
break;
|
||
case GridBorderFlag.SingleBold:
|
||
drawRectangle.Pen.Width = 2f;
|
||
drawRectangle.Draw();
|
||
if (multiHeader != null)
|
||
{
|
||
drawRectangle.Rectangle = body.Rectangle;
|
||
drawRectangle.DrawTopLine();
|
||
}
|
||
break;
|
||
case GridBorderFlag.Double:
|
||
drawRectangle.Draw();
|
||
rectangle = new Rectangle(x - 2, y - 2, width + 4, num + 4);
|
||
drawRectangle.Rectangle = rectangle;
|
||
drawRectangle.Draw();
|
||
break;
|
||
case GridBorderFlag.DoubleBold:
|
||
drawRectangle.Draw();
|
||
rectangle = new Rectangle(x - 2, y - 2, width + 4, num + 4);
|
||
drawRectangle.Rectangle = rectangle;
|
||
drawRectangle.Pen.Width = 2f;
|
||
drawRectangle.Draw();
|
||
break;
|
||
}
|
||
}
|
||
|
||
private void AddSewingNonePrintArea()
|
||
{
|
||
if (this.Sewing.SewingDirection == SewingDirectionFlag.Left)
|
||
{
|
||
this.mPrinterMargins.Left += this.Sewing.Margin;
|
||
this.mPrinterMargins.Width -= this.Sewing.Margin;
|
||
}
|
||
else if (this.Sewing.SewingDirection == SewingDirectionFlag.Top)
|
||
{
|
||
this.mPrinterMargins.Top += this.Sewing.Margin;
|
||
this.mPrinterMargins.Height -= this.Sewing.Margin;
|
||
}
|
||
}
|
||
|
||
private void WriteMetricsToConsole(PrintPageEventArgs ev)
|
||
{
|
||
Graphics graphics = ev.Graphics;
|
||
Console.WriteLine("*****Information about the printer*****");
|
||
Console.WriteLine("纸张的大小 ev.PageSettings.PaperSize:" + ev.PageSettings.PaperSize);
|
||
Console.WriteLine("打印分辨率 ev.PageSettings.PrinterResolution:" + ev.PageSettings.PrinterResolution);
|
||
Console.WriteLine("旋转的角度 ev.PageSettings.PrinterSettings.LandscapeAngle" + ev.PageSettings.PrinterSettings.LandscapeAngle);
|
||
Console.WriteLine("");
|
||
Console.WriteLine("*****Information about the page*****");
|
||
Console.WriteLine("页面的大小 ev.PageSettings.Bounds:" + ev.PageSettings.Bounds);
|
||
Console.WriteLine("页面(同上) ev.PageBounds:" + ev.PageBounds);
|
||
Console.WriteLine("页面的边距 ev.PageSettings.Margins.:" + ev.PageSettings.Margins);
|
||
Console.WriteLine("页面的边距 ev.MarginBounds:" + ev.MarginBounds);
|
||
Console.WriteLine("水平分辨率 ev.Graphics.DpiX:" + ev.Graphics.DpiX);
|
||
Console.WriteLine("垂直分辨率 ev.Graphics.DpiY:" + ev.Graphics.DpiY);
|
||
ev.Graphics.SetClip(ev.PageBounds);
|
||
Console.WriteLine("ev.Graphics.VisibleClipBounds:" + ev.Graphics.VisibleClipBounds);
|
||
SizeF sizeF = new SizeF(ev.Graphics.VisibleClipBounds.Width * ev.Graphics.DpiX / 100f, ev.Graphics.VisibleClipBounds.Height * ev.Graphics.DpiY / 100f);
|
||
Console.WriteLine("drawing Surface Size in Pixels" + sizeF);
|
||
}
|
||
}
|
||
}
|