文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C#中怎么实现打印功能

2023-06-17 22:56

关注

这期内容当中小编将会给大家带来有关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#中怎么实现打印功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯