C#实现打印功能实例详解

C#实现打印功能是通过使用PrintDialog控件来实现的。任何物有所值的应用程序都会拥有某种打印功能,不管是基本的打印功能还是更为复杂的打印功能,比如允许用户只打印所选的文本或某个范围内的页面。本节将探讨一下实现基本的C#打印功能,看看哪些类有助于打印文件中的文本。C#实现打印功能的过程是:在调用PrintDialog控件的ShowDialog方法之前,必须先设置PrintDialog类的Document属性。该属性接受一个PrintDocument类,以获得打印机设置并将输出内容发送给打印机。PrintDocument类需要System.Drawing.Printing名称空间,因此,在定义使用PrintDocument类的对象前,必须包含这个名称空间。

创新互联公司主要从事网页设计、PC网站建设(电脑版网站建设)、wap网站建设(手机版网站建设)、响应式网站、程序开发、网站优化、微网站、小程序制作等,凭借多年来在互联网的打拼,我们在互联网网站建设行业积累了丰富的成都网站设计、网站制作、网站设计、网络营销经验,集策划、开发、设计、营销、管理等多方位专业化运作于一体。

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

创建一个PrintDialog的实例。如下:

 
 
 
  1. System.Windows.Forms.PrintDialog PrintDialog1=new PrintDialog (); 

创建一个PrintDocument的实例.如下:

 
 
 
  1. System.Drawing.Printing.PrintDocument docToPrint = 
  2.  new System.Drawing.Printing.PrintDocument(); 

设置打印机开始打印的事件处理函数.函数原形如下:

 
 
 
  1. void docToPrint_PrintPage(object sender, 
  2.  System.Drawing.Printing.PrintPageEventArgs e) 

将事件处理函数添加到PrintDocument的PrintPage事件中。

 
 
 
  1. docToPrint.PrintPage+=
  2. new PrintPageEventHandler(docToPrint_PrintPage); 

设置PrintDocument的相关属性,如:

 
 
 
  1. PrintDialog1.AllowSomePages = 
  2. true;PrintDialog1.ShowHelp = true; 

把PrintDialog的Document属性设为上面配置好的PrintDocument的实例:

 
 
 
  1. PrintDialog1.Document = docToPrint; 

调用PrintDialog的ShowDialog函数显示打印对话框:

 
 
 
  1. DialogResult result = PrintDialog1.ShowDialog(); 

根据用户的选择,开始打印:

 
 
 
  1. if (result==DialogResult.OK)
  2.  {
  3. docToPrint.Print();
  4.  }

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

使用时先创建PrintService类的实例,然后调用void StartPrint(Stream streamToPrint,string streamType)函数开始打印。其中streamToPrint是要打印的内容(字节流),streamType是流的类型(txt表示普通文本,image表示图像);

 
 
 
  1. using System;
  2. using System.Drawing.Printing;
  3. using System.Windows.Forms;
  4. using System.IO; 
  5. namespace EDImageSystem
  6. {
  7.  /// 
  8.  /// PrintService 的摘要说明。
  9.  /// 
  10.  public class PrintService
  11.  {
  12. public PrintService()
  13. {
  14.  //
  15.  // TODO: 在此处添加构造函数逻辑
  16.  //
  17.  this.docToPrint.PrintPage+=
  18. new PrintPageEventHandler(docToPrint_PrintPage);
  19. }//将事件处理函数添加到PrintDocument的PrintPage中 
  20. // Declare the PrintDocument object.
  21. private System.Drawing.Printing.PrintDocument docToPrint = 
  22.  new System.Drawing.Printing.PrintDocument();
  23. //创建一个PrintDocument的实例 
  24. private System.IO.Stream streamToPrint;
  25. string streamType; 
  26. // This method will set properties on the PrintDialog object and
  27. // then display the dialog.
  28. public void StartPrint(Stream streamToPrint,string streamType)
  29.  this.streamToPrint=streamToPrint;
  30.  this.streamType=streamType;
  31.  // Allow the user to choose the page range he or she would
  32.  // like to print.
  33.  System.Windows.Forms.PrintDialog PrintDialog1=
  34. new PrintDialog ();//实现C#打印之创建一个PrintDialog的实例。
  35.  PrintDialog1.AllowSomePages = true; 
  36.  // Show the help button.
  37.  PrintDialog1.ShowHelp = true; 
  38.  // Set the Document property to the PrintDocument for 
  39.  // which the PrintPage Event has been handled. To display the
  40.  // dialog, either this property or the PrinterSettings property 
  41.  // must be set 
  42.  PrintDialog1.Document = docToPrint;
  43. //把PrintDialog的Document属性设为上面配置好的PrintDocument的实例 
  44.  DialogResult result = PrintDialog1.ShowDialog();
  45. //调用PrintDialog的ShowDialog函数显示打印对话框 
  46.  // If the result is OK then print the document.
  47.  if (result==DialogResult.OK)
  48.  {
  49. docToPrint.Print();//实现C#打印之开始打印
  50.  } 
  51. // The PrintDialog will print the document
  52. // by handling the document's PrintPage event.
  53. private void docToPrint_PrintPage(object sender, 
  54.  System.Drawing.Printing.PrintPageEventArgs e)
  55. //设置打印机开始打印的事件处理函数
  56.  // Insert code to render the page here.
  57.  // This code will be called when the control is drawn. 
  58.  // The following code will render a simple
  59.  // message on the printed document
  60.  switch(this.streamType)
  61.  {
  62. case "txt":
  63.  string text = null;
  64.  System.Drawing.Font printFont = new System.Drawing.Font
  65. ("Arial", 35, System.Drawing.FontStyle.Regular); 
  66.  // Draw the content.
  67.  System.IO.StreamReader streamReader=
  68. new StreamReader(this.streamToPrint);
  69.  text=streamReader.ReadToEnd();
  70.  e.Graphics.DrawString(text,printFont,
  71. System.Drawing.Brushes.Black,e.MarginBounds.X,e.MarginBounds.Y);
  72.  break;
  73. case "image":
  74.  System.Drawing.Image image=
  75. System.Drawing.Image.FromStream(this.streamToPrint);
  76.  int x=e.MarginBounds.X;
  77.  int y=e.MarginBounds.Y;
  78.  int width=image.Width;
  79.  int height=image.Height;
  80.  if((width/e.MarginBounds.Width)>(
  81. height/e.MarginBounds.Height))
  82.  {
  83. width=e.MarginBounds.Width;
  84. height=image.Height*e.MarginBounds.Width/image.Width;
  85.  }
  86.  else
  87.  {
  88. height=e.MarginBounds.Height;
  89. width=image.Width*e.MarginBounds.Height/image.Height;
  90.  }
  91.  System.Drawing.Rectangle destRect=
  92. new System.Drawing.Rectangle(x,y,width,height);
  93.  e.Graphics.DrawImage(image,
  94. destRect,0,0,image.Width,image.Height,
  95. System.Drawing.GraphicsUnit.Pixel);
  96.  break;
  97. default:
  98.  break;
  99.  }
  100.  
  101. }

实现C#打印的具体实现步骤和具体的实例演示就向你介绍到这里,希望对你了解实现C#打印以及学习C#有所帮助。

网站标题:C#实现打印功能实例详解
文章起源:http://www.mswzjz.cn/qtweb/news3/27853.html

攀枝花网站建设、攀枝花网站运维推广公司-贝锐智能,是专注品牌与效果的网络营销公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 贝锐智能