文档及代码下载:http://www.dingos.cn/index.php?topic=247.0
一个简单的示例 - 通过C#实现打印文本框中的内容
实现如图:
使用控件执行打印。实现打印的主要组件是“PrintDocument”控件 。使用这个控件调用“Print” 函数实现“PrintPage”事件 。如下是常规命令:
打印事件:
说明:
PrintDocument.Print 方法:指定打印输出的方法是处理
PrintPage事件并使用PrintPageEventArgs中包含的 Graphics。
打印页事件:
实现:
说明:
- PrintPageEventArgs类:为 PrintPage 事件提供数据。
- PrintPageEventArgs.MarginBounds 属性:获取表示边距以内的页面部分的矩形区域。
- Font 类:定义特定的文本格式,包括字体、字号和字形属性。无法继承此类。
- SolidBrush 类:定义单色画笔。画笔用于填充图形形状,如矩形、椭圆、扇形、多边形和封闭路径。无法继承此类。
- PrintPageEventArgs.Graphics 属性:获取用于绘制页的 Graphics。
- Graphics.DrawString 方法:使用指定 StringFormat 的格式化属性,用指定的 Brush 和 Font 对象在指定的位置绘制指定的文本字符串。
参数:
- s:要绘制的字符串。
- font:Font,它定义字符串的文本格式。
- brush:Brush,它确定所绘制文本的颜色和纹理。
- x:所绘制文本的左上角的 x 坐标。
- y:所绘制文本的左上角的 y 坐标。
- format:StringFormat,它指定应用于所绘制文本的格式化属性(如行距和对齐方式)。
- StringFormat 类:封装文本布局信息(如对齐、文字方向和 Tab 停靠位),显示操作(如省略号插入和国家标准 (National) 数字替换)和 OpenType 功能。无法继承此类。
- PrintPageEventArgs.HasMorePages 属性:获取或设置一个值,该值指示是否打印附加页。若应打印附加页,则为 true;否则为 false。默认为 false。
- Brush.Dispose 方法:释放由此 Brush 对象使用的所有资源。
- 调用 Dispose 将允许重新分配由此 Brush 对象使用的资源以用于其他目的。
- 使用完 Brush 后调用 Dispose。Dispose 方法使 Brush 处于不可用状态。
- 调用完 Dispose 后,必须释放对 Brush 的所有引用,这样垃圾回收器才能收回 Brush 占用的内存。
点击“Print”菜单将调用“PrintFile_Click”。这条线路首先访问PrintDialog对象以便文档准备打印。使用“ShowDialog”对话框以便用户能够设置打印属性并决定是否需要打印。在调用“ThePrintDocument.Print方法”后将开始打印过程。系统自动调用“PrintPage”事件打印需要的页面信息。“PrintPageEventArgs”参数“ev”包含打印设备内容,“ev.Graphics”用户绘制打印机。在这个例子中我们将从Rich Text Edit控件中使用StringReader逐行读取信息。 “StringReader”类类似“stream”一样处理字符串并可以以使用ReadLine方法从text edit控件中逐行读取信息。可以根据边框接收位置及字体的大小。我们感兴趣的是记事本可以预览打印机的字体长度,通过使用GetHeight方法(printFont.GetHeight(ev.Graphics()))获得打印机设备内容。因为在屏幕上字体的象素和打印机上的象素是不同的。“PrintPageEventArg”的“HasMorepages”表示连续读取“PrintPage”事件中读取在textbox中比当前页面多的行。
打印预览:
实现:
说明:
- StringReader 类:实现从字符串进行读取的 TextReader。
- PrintPreviewDialog 类:表示包含 PrintPreviewControl 的对话框窗体。创建 PrintPreviewDialog 的实例时,Document 属性被初始化为空引用。可以在运行时更改这一属性的值。
- PrintPreviewDialog.Document 属性:获取或设置要预览的文档。
- 属性值:PrintDocument,它表示要预览的文档。