在windows应用程序中文档的打印是一项非常重要的功能,在打印程序的设计中复杂难度最大的属于打印功能设置,因为中途需要计算一些复杂的计算过程。比如页面开始打印的起始位置和结束位置,换行,分页等。
例图1
这里写图片描述
vs2013自带了打印控件。基本可以满足打印与打印预览的需求。
个别打印特殊要求需要重写控件功能。
本程序使用五种
打印需要的控件
分别是:
PrintDocument 打印输出控件
PrintDialog 构造对话框控件 -> 打印设置功能
PageSetupDialog 构造对话框控件 -> 页面设置功能
PrintPreviewDialog 构造对话框控件 -> 打印预览功能
PrintPreviewControl 打印预览控件 -> 独立的打印预览显示
例图2
这里写图片描述
实现打印功能的核心是PrintDocument类,该类的代码命名空间是System.Drawing.Printing,封装了当前的打印设置页面以及所有的与打印有关的事件和方法。 这个类包括以下几个属性,事件和方法
属性部分 1、PrinterSettings属性 存放打印机的设置信息,这个属性不需要程序员设置,因为它是由打印对话框获取的 2、PrintCountroller属性 控制打印过程 3、DefaultPageSettings属性 存放页面设置信息,打印纸大小方向等。也不需要程序员设置,因为它是由页面设置对话框获取的。 4、DocumentName属性 指定文档名称,出现在打印机状态窗口中
事件与方法
BeginPrint
将要打印文档
时发生。
PrintPage
对于
要打印的每一页
发生一次。事件接受一个PrintPageEventArgs参数该参数封装了打印相关的信息。
这里写图片描述
PrintPageEventArgs参数有很多重要的属性
1、Cancel 取消打印
2、Graphics 页面的绘图对象
3、HasMorePages 是否还有要打印的页面
Print方法:该方法没有参数 调用它将按照当前设置开始打印. 首先先拉四个控件
以下代码全部复制即可使用!!!
这是全文最重点的一部分代码,具体实现打印过程文字的摆放位置,换行,分页部分都在这里设置,而且在代码写在PrintDocument控件中的PrintPage事件中。 代码中有非常详细的注释和过程解答
代码写在Button按钮控件的单击事件中,前提是先拉入PrintDiglog控件
例图3
这里写图片描述
页面设置和打印预览与打印设置原理相同。 代码写在Button按钮控件的单击事件中,前提是先拉入PrintSetupDiglog控件。
例图4:
这里写图片描述
代码写在Button按钮控件的单击事件中,前提是先拉入PrintPreviewDiglog控件
例图5:
这里写图片描述
打印直接调用printDocument的Print()方法因为用户可能在打印之前还要再更改打印设置所以 在这里再次显示打印设置对话框。
拉入PrintPreviewControl控件
例图6:
这里写图片描述
总结打印过程:
1、构造/拉入四个打印控件,添加printDocument的PrintPage方法。
2、实现PrintPage方法。
3 、在用户的单击事件中调用
printDocument 的 Print方法实现打印功能
在这中间可能要用到
PrintDialog ,PrintPreviewDialog ,PageSetupDialog
设置和查看打印效果这些方法通常是由菜单的单击触发的。