PrintDocument 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.printing.printdocument?view=netcore-3.1
要使用打印机打印数据,首先要将数据传送到打印机,并通知打印机开始打印。
PrintDocument是Printing名称空间F定义的一个类,表示需要打印的文档。PrintDocument类对象的方法Print用于通知打印机开始打印。PrintDocument类对象有一个名为PrintPage的事件,当开始打印时,即触发该事件。
PrintDocument.PrintPage 事件
PrintPageEventArgs 类
PrintPageEventArgs也是Printing名称空间下定义的一个类,专门用于向打印机传送数据。
PrintPageEventArgs类的主要属性包括:
- Graphics,该对象负责将数据向打印机输出;
- HasMorePages,用于判断是否还有数据未能在一页中显示;
- MarginBounds,周边空白区域以内的区域;
- PageSettings,当前页面设置。
Graphics 类
https://docs.microsoft.com/zh-cn/dotnet/api/system.drawing.graphics?view=dotnet-plat-ext-3.1
Graphics.DrawString 方法
Graphics对象的属性和方法主要包括:
- Clip,绘图区域:
- DpiX,水平分辨率;
- DpiY,垂直分辨率等。
Graphics的方法包括:
- Drawlmage,画图片;
- DrawString,输出字符串;
- DrawLine,画直线。
关键字Handles用于声明处理事件的方法。除Handles外,AddHandle用于分配处理事件的方法。AddHandler的使用形式如下所示:
AddHandler 消息,Address Of 处理方法。
其中AddressOf表示处理方法的入口地址。
示例:
控件 | 属性 | 值 | 控件 | 属性 | 值 |
Form | Name | Form1 | Panel | Name | panel1 |
Textbox | Name | txtText | Button | Name | btnPrint |
Text | 打印 |
Public Class Form1
Dim streamToPrint As IO.StreamReader
Dim printFont As Font
Dim FileName As String = "Print.txt"
Private Sub PrintDocument(ByVal sender As Object, ByVal ev As Printing.PrintPageEventArgs)
Dim leftMargin As Single = ev.MarginBounds.Left
Dim topMargin As Single = ev.MarginBounds.Top
ev.Graphics.DrawString(txtText.Text, printFont, Brushes.Black, leftMargin, topMargin, New StringFormat)
End Sub
Private Sub btnPrint_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrint.Click
printFont = New Font("宋体", 12)
Dim pd As New Printing.PrintDocument
AddHandler pd.PrintPage, AddressOf PrintDocument
pd.Print()
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
streamToPrint = New IO.StreamReader(FileName)
txtText.Text = streamToPrint.ReadToEnd
streamToPrint.Close()
End Sub
End Class