⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c#打印功能(printdialog,printdocument).txt

📁 C#打印功能(PrintDialog,PrintDocument).
💻 TXT
字号:
在C#中实现打印功能(C#中PrintDialog,PrintDocument的使用) 

            
                    在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;
                     }
                     
                    }
                   }
                  }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -