.NETFramework打印详细分析

如果你是一名开发人员,就不应该不知道.NET Framework。它的作用在编程人员眼中是非常强大的。.NET Framework打印功能都以组件的方式提供,为程序员提供了很大的方便,但是这几个组件的使用还是很复杂的,有必要解释一下。 #t#

专注于为中小企业提供网站设计、网站制作服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业梅州免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

.NET Framework打印操作通常包括以下四个功能

1 打印设置 设置打印机的一些参数比如更改打印机驱动程序等

2 页面设置 设置页面大小纸张类型等

3 打印预览 类似于word中的打印预览

4 打印

实现打印功能的核心是PrintDocument类这个类属于System.Drawing.Printing名字空间这个类封装了当前的打印设置页面设置以及所有的与打印有关的事件和方法。这个类包括以下几个属性 事件 和方法:

1、PrinterSettings 属性

存放打印机的设置信息这个属性不需要程序员设置因为它是由打印对话框获取的

2、PrintCountroller 属性

控制.NET Framework打印过程

3、DefaultPageSettings 属性

存放页面设置信息 打印纸大小方向等也不需要程序员设置因为它是由页面设置对话框获取的

4、DocumentName 属性

指定文档名称,出现在打印机状态窗口中

1、BeginPrint事件

在打印之前发出

2. PrintPage事件

每打印一页是发出,事件接受一个PrintPageEventArgs参数该参数封装了打印相关的信息

PrintPageEventArgs参数有很多重要的属性

1 Cancel 取消打印

2 Graphics 页面的绘图对象

3 HasMorePages 是否还有要打印的页面

Print 方法

该方法没有参数 调用它将按照当前设置开始打印

若实现打印功能首先构造PrintDocument对象添加打印事件

 
 
 
  1. PrintDocument printDocument; 
  2. private void InitializeComponent() 
  3. ... 
  4. printDocument=new PrintDocument(); 
  5. printDocument.PrintPage += new 
    PrintPageEventHandler (this.print
    Document_PrintPage); 
  6. ... 

实现.NET Framework打印事件功能

打印和绘图类v似都是调用Graphics 类的方法进行画图 不同的是一个在显示器上一个在打印纸上并且打印要进行一些复杂的计算,如换行 分页等。

 
 
 
  1. private void printDocument_PrintPage
    (object sender,PrintPageEventArgs e) 
  2. Graphics g = e.Graphics; //获得绘图对象 
  3. float linesPerPage = 0; //页面的行号 
  4. float yPosition = 0; //绘制字符串的纵向位置 
  5. int count = 0; //行计数器 
  6. float leftMargin = e.MarginBounds.Left;
  7. //左边距 
  8. float topMargin = e.MarginBounds.Top;
  9. //上边距 
  10. string line = null; 行字符串 
  11. Font printFont = this.textBox.Font;
  12. //当前的打印字体 
  13. SolidBrush myBrush = new SolidBrush
    (Color.Black);//刷子 
  14. linesPerPage = e.MarginBounds.Height / 
    printFont.GetHeight(g);//每页可打印的行数 
  15. //逐行的循环打印一页 
  16. while(count < linesPerPage && ((line=
    lineReader.ReadLine()) != null)) 
  17. yPosition = topMargin + (count * 
    printFont.GetHeight(g)); 
  18. g.DrawString(line, printFont, myBrush, 
    leftMargin, yPosition, new StringFormat()); 
  19. count++; 
  20. }

如果本页打印完成而line不为空说明还有没完成的页面这将触发下一次的打印事件在下一次的打印中lineReader会

自动读取上次没有打印完的内容因为lineReader是这个打印方法外的类的成员它可以记录当前读取的位置

 
 
 
  1. if(line != null) 
  2. e.HasMorePages = true; 
  3. else 
  4. e.HasMorePages = false; 
  5. }

.NET Framework打印设置,构造打印对话框 将对话框中设置的Document属性赋给printDocument这样会将用户的设置自动保存到printDocument的PrinterSettings属性中

 
 
 
  1. protected void FileMenuItem_
    PrintSet_Click(object sender,
    EventArgs e) 
  2. PrintDialog printDialog = 
    new PrintDialog(); 
  3. printDialog.Document =
     printDocument; 
  4. printDialog.ShowDialog(); 
  5. }

页面设置和打印预览与打印设置原理相同都是构造对话框将用户在对话框中的设置保存到相应的类的属性中

 
 
 
  1. protected void FileMenuItem_PageSet_
    Click(object sender,EventArgs e) 
  2. PageSetupDialog pageSetupDialog = 
    new PageSetupDialog(); 
  3. pageSetupDialog.Document = 
    printDocument; 
  4. pageSetupDialog.ShowDialog(); 
  5. }

.NET Framework打印预览

 
 
 
  1. protected void FileMenuItem_PrintView_
    Click(object sender,EventArgs e) 
  2. PrintPreviewDialog printPreviewDialog = 
    new PrintPreviewDialog(); 
  3. printPreviewDialog.Document = 
    printDocument; 
  4. lineReader = new StringReader
    (textBox.Text); 
  5. try 
  6. printPreviewDialog.ShowDialog(); 
  7. catch(Exception excep) 
  8. MessageBox.Show(excep.Message, "打印出错",
     MessageBoxButtons.OK, MessageBoxIcon.Error); 
  9. }

打印就可以直接调用printDocument的Print()方法因为用户可能在打印之前还要再更改打印设置所以

在这里再次显示.NET Framework打印设置对话框

 
 
 
  1. protected void FileMenuItem_Print_Click
    (object sender,EventArgs e) 
  2. PrintDialog printDialog = new PrintDialog(); 
  3. printDialog.Document = printDocument; 
  4. lineReader = new StringReader(textBox.Text); 
  5. if (printDialog.ShowDialog() == DialogResult.OK) 
  6. try 
  7. printDocument.Print(); 
  8. catch(Exception excep) 
  9. MessageBox.Show(excep.Message, "打印出错", 
    MessageBoxButtons.OK, MessageBoxIcon.Error); 
  10. printDocument.PrintController.OnEndPrint
    (printDocument,new PrintEventArgs()); 
  11. }

总结.NET Framework打印的过程是

1 在应用程序窗体初始化时构造PrintDocument对象 添加 printDocument 的 PrintPage 方法

2 实现PrintPage方法 4 在用户的单击事件中调用 printDocument 的 Print方法实现打印功能

在这中间可能要用到 PrintDialog PrintPreviewDialog PageSetupDialog 设置和查看打印效

果这些方法通常是由菜单的单击触发的。

文章标题:.NETFramework打印详细分析
文章地址:http://www.shufengxianlan.com/qtweb/news39/3339.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

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