< 返回技术文档列表

C#中怎么实现打印功能

发布时间:2021-09-01 02:31:00⊙投诉举报

这期内容当中小编将会给大家带来有关C#中怎么实现打印功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

C#实现打印功能具体的操作步骤如下:

创建一个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();   }

C#实现打印功能的实例如下:

使用时先创建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 ();//实现C#打印之创建一个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();//实现C#打印之开始打印   }    }    // 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;   }     }    }  }

上述就是小编为大家分享的C#中怎么实现打印功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注血鸟云行业资讯频道。


/template/Home/Zkeys/PC/Static