个人买卖网站如何做,厦门网站建设哪家强,招财猫网站怎么做,福州网站建设市场之前写过一个“C#WinForm程序中选择打印机打印”的文章#xff0c;但在使用过程中#xff0c;尤其是生成Word文档时#xff0c;会感觉系统响应较慢。如果不需要留存打印文档的电子版#xff0c;可以使用下面的类直接打印。相比之前的方法#xff0c;这种方法更简单#x…之前写过一个“C#WinForm程序中选择打印机打印”的文章但在使用过程中尤其是生成Word文档时会感觉系统响应较慢。如果不需要留存打印文档的电子版可以使用下面的类直接打印。相比之前的方法这种方法更简单可以绘制文字、线段、图片。
打印响应速度很快比之前的方法更好用。
需要引用
using System.Drawing;
using System.Drawing.Printing;
public class PrnBill{private Font titleFont;//标题字体;private Font font;//正文字体private Font smallFont; //小字体;private PrintDocument printDoc; // 使用的打印机名称private string printerName;public string PrinterName{get { return printerName; }set { printerName value; }}// 打印份数private short copies;public short Copies{get { return copies; }set { copies value; }}//标题内容private string title;public string Title{get{return title;}set{title value;}}//姓名private string cusName;public string CusName;{get{return cusName;}set{cusName value;}}//正文内容private string contents;public string Contents{get { return contents; }set { contents value; }}//标志图片private Image logoImg;public Image LogoImg{get { return logoImg; }set { logoImg value; }}//构造函数public PrnBill(string printer, short prnCopies, string _title, string _cusname, string _contents,Image _logoImg){printDoc new PrintDocument();printDoc.PrintPage new PrintPageEventHandler(pd_PrintBill);titleFont new System.Drawing.Font(宋体, 25f);//标题字体font new System.Drawing.Font(宋体, 14f);//字体smallFont new System.Drawing.Font(宋体, 12f);//字体printerName printer;copies prnCopies;logoImg _logoImg;contents _contents;cusName _cusname;}// 打印的方法public void Print(){printDoc.PrinterSettings.PrinterName printerName;printDoc.PrinterSettings.Copies copies;printDoc.Print(); //调用pd_PrintBill}/// summary/// 打印主过程/// /summaryprivate void pd_PrintBill(object sender, PrintPageEventArgs e){int topMargin 24; //上边距int leftMargin 50; //左边距int rowHeight 30; //行高int lineStartY 117; //画线起始位置int currentPosY lineStartY - rowHeight; //当前绘制位置int currentLineY lineStartY; //当前画线位置int padding 2; //调整位置使用float fdxsLogo 0.1f; //图片缩放系数Pen penLine; //画笔//因需要绘制表格故把表格第一行的四个格子宽度放到了变量int w_HA 148;int w_HB 226;int w_HC 152;int w_HD 175;//开始画文字DrawString(e.Graphics, 业务受理单, titleFont, SystemBrushes.WindowText, new Rectangle(leftMargin, topMargin, w_HA w_HB w_HC w_HD 15, 70), StringAlignment.Center, StringAlignment.Center);DrawString(e.Graphics, 姓名 cusName, font, SystemBrushes.WindowText, new Rectangle(leftMargin, currentPosY, w_HA w_HB, rowHeight), StringAlignment.Near, StringAlignment.Center); currentPosY rowHeight;DrawString(e.Graphics, 事项内容contents, font, SystemBrushes.WindowText, new Rectangle(leftMargin, currentPosY, w_HAw_HB, rowHeight), StringAlignment.Near, StringAlignment.Center);//这里可以按照自己需要继续添加内容……//在合适的位置绘制图片if (logoImg ! null){e.Graphics.DrawImage(logoImg, new RectangleF((leftMargin * 2 w_HA w_HB w_HC w_HD - logoImg.Width * fdxsLogo) / 2, currentPosY, logoImg.Width * fdxsLogo, logoImg.Height * fdxsLogo));}//开始画横线penLine new Pen(Color.Black, 1f);penLine.DashStyle System.Drawing.Drawing2D.DashStyle.DashDot;e.Graphics.DrawLine(penLine, leftMargin, currentLineY, w_HA w_HB w_HC w_HD leftMargin, currentLineY);}/**//// summary/// 绘制文字的具体方法/// /summary/// param nameg定义画布/param/// param names需要绘制的文字/param/// param namefont字体/param/// param namebrush笔刷/param/// param namerect绘制区域/param/// param namealignment水平对齐方式/param/// param namelineAlignment垂直对齐方式/paramprivate void DrawString(Graphics g, string s, Font font, Brush brush, Rectangle rect, StringAlignment alignment, StringAlignment lineAlignment){StringFormat sf new StringFormat();sf.Alignment alignment;sf.LineAlignment lineAlignment;g.DrawString(s, font, brush, rect, sf);}}