c#小票打印

在C#中使用PrintDialog可以很方便的实现程序的打印功能。 其步骤如下: 创建一个PrintDialog的实例。如下: System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 创建一个PrintDocument的实例.如下: System.Drawing.Printing.PrintDocument docToPrint = new System.Drawing.Printing.PrintDocument(); 设置打印机开始打印的事件处理函数.函数原形如下: void docToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 将事件处理函数添加到PrintDocument的PrintPage事件中。 docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); 设置PrintDocument的相关属性,如: PrintDialog1.AllowSomePages = true;PrintDialog1.ShowHelp = true; 把PrintDialog的Document属性设为上面配置好的PrintDocument的实例: PrintDialog1.Document = docToPrint; 调用PrintDialog的ShowDialog函数显示打印对话框: DialogResult result = PrintDialog1.ShowDialog(); 根据用户的选择,开始打印: if (result==DialogResult.OK) { docToPrint.Print(); } 例子如下: 使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像); -------------------------------------------------------------------------------- using System; using System.Drawing.Printing; using System.Windows.Forms; using System.IO; namespace EDImageSystem { /// <summary> /// PrintService 的摘要说明。 /// </summary> public class PrintService { public PrintService() { // // TODO: 在此处添加构造函数逻辑 // this.docToPrint.PrintPage+=new PrintPageEventHandler(docToPrint_PrintPage); }//将事件处理函数添加到PrintDocument的PrintPage中 // Declare the PrintDocument object. private System.Drawing.Printing.PrintDocument docToPrint = new System.Drawing.Printing.PrintDocument();//创建一个PrintDocument的实例 private System.IO.Stream streamToPrint; string streamType; // This method will set properties on the PrintDialog object and // then display the dialog. public void StartPrint(Stream streamToPrint,string streamType) { this.streamToPrint=streamToPrint; this.streamType=streamType; // Allow the user to choose the page range he or she would // like to print. System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog ();//创建一个PrintDialog的实例。 PrintDialog1.AllowSomePages = true; // Show the help button. PrintDialog1.ShowHelp = true; // Set the Document property to the PrintDocument for // which the PrintPage Event has been handled. To display the // dialog, either this property or the PrinterSettings property // must be set PrintDialog1.Document = docToPrint;//把PrintDialog的Document属性设为上面配置好的PrintDocument的实例 DialogResult result = PrintDialog1.ShowDialog();//调用PrintDialog的ShowDialog函数显示打印对话框 // If the result is OK then print the document. if (result==DialogResult.OK) { docToPrint.Print();//开始打印 } } // The PrintDialog will print the document // by handling the document’s PrintPage event. private void docToPrint_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)//设置打印机开始打印的事件处理函数 { // Insert code to render the page here. // This code will be called when the control is drawn. // The following code will render a simple // message on the printed document switch(this.streamType) { case "txt": string text = null; System.Drawing.Font printFont = new System.Drawing.Font ("Arial", 35, System.Drawing.FontStyle.Regular); // Draw the content. System.IO.StreamReader streamReader=new StreamReader(this.streamToPrint); text=streamReader.ReadToEnd(); e.Graphics.DrawString(text,printFont,System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y); break; case "image": System.Drawing.Image image=System.Drawing.Image.FromStream(this.streamToPrint); int x=e.MarginBounds.X; int y=e.MarginBounds.Y; int width=image.Width; int height=image.Height; if((width/e.MarginBounds.Width)>(height/e.MarginBounds.Height)) { width=e.MarginBounds.Width; height=image.Height*e.MarginBounds.Width/image.Width; } else { height=e.MarginBounds.Height; width=image.Width*e.MarginBounds.Height/image.Height; } System.Drawing.Rectangle destRect=new System.Drawing.Rectangle(x,y,width,height); e.Graphics.DrawImage(image,destRect,0,0,image.Width,image.Height,System.Drawing.GraphicsUnit.Pixel); break; default: break; } } } }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值