○VB.netからの印刷処理
■1ページだけの印刷----------------------------------------------------------
Private WithEvents PrintDocument1 As New System.Drawing.Printing.PrintDocument()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.DocumentName = "てすと"
PrintDocument1.Print()'イベントを送信
End Sub
'イベントを選んで追加します。
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Dim PrtFont As New Font("MS ゴジック", 12)
Dim left As Single = e.MarginBounds.Left 'マージン
Dim top As Single = e.MarginBounds.Top
Dim right As Single = e.MarginBounds.Right
Dim bottom As Single = e.MarginBounds.Bottom
Dim width As Single = right - left
Dim height As Single = bottom - top
e.Graphics.DrawString("いなばの印刷", PrtFont, Brushes.Black, left, top)
e.Graphics.DrawString("いなばの印刷2行目", PrtFont, Brushes.Black, left, top + PrtFont.Height)
e.Graphics.DrawLine(System.Drawing.Pens.Black, left, top + height / 2, right, top + height / 2)
e.Graphics.DrawLine(System.Drawing.Pens.Black, left + width / 2, top, left + width / 2, bottom)
e.Graphics.DrawEllipse(System.Drawing.Pens.Black, left + width / 2 - 100, top + height / 2 - 100, 200, 200)
End Sub
上のコードを実行すると以下のような印刷結果が得られます。画像が汚くてすいません
■複数ページにまたがる印刷--------------------------------------------------------
2ページ印刷します。
2ページ印刷するということはつまり、2回イベントハンドラを実行するということです。
e.HasMorePages = True '印刷を繰り返します
e.HasMorePages = False '印刷を終わります
HasMorePagesによりイベントの連続発生を制御します。
もちろんTrueのままだと、印刷は止まりません
意図的にFalseを入れて止める必要があります。
Private WithEvents PrintDocument1 As New System.Drawing.Printing.PrintDocument()
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PrintDocument1.DocumentName = "てすと"
PrintDocument1.Print()'イベントを送信
End Sub
Private Sub PrintDocument1_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
Static PageNo As Integer = 0 'ページをカウントします。
PageNo = PageNo + 1
Dim PrtFont As New Font("MS ゴジック", 12)
Dim left As Single = e.MarginBounds.Left 'マージン
Dim top As Single = e.MarginBounds.Top
Dim right As Single = e.MarginBounds.Right
Dim bottom As Single = e.MarginBounds.Bottom
Dim width As Single = right - left
Dim height As Single = bottom - top
e.Graphics.DrawString(PageNo.ToString & "ページ目", PrtFont, Brushes.Black, left, top)
e.Graphics.DrawString("いなばの印刷2行目", PrtFont, Brushes.Black, left, top + PrtFont.Height)
e.Graphics.DrawLine(System.Drawing.Pens.Black, left, top + height / 2, right, top + height / 2)
e.Graphics.DrawLine(System.Drawing.Pens.Black, left + width / 2, top, left + width / 2, bottom)
e.Graphics.DrawEllipse(System.Drawing.Pens.Black, left + width / 2 - 100, top + height / 2 - 100, 200, 200)
If (PageNo < 2) Then
e.HasMorePages = True '印刷を繰り返します
Else
e.HasMorePages = False '印刷を終わります
PageNo = 0
End If
End Sub
■プリンタの選択ダイアログを出して印刷する---------------------------------------------------
Dim PDlg As New PrintDialog()
PDlg.Document = PrintDocument1
If (PDlg.ShowDialog = DialogResult.OK) Then
PDlg.Document.Print()'イベントを送信
End If
■プレビューダイアログを表示して印刷する-----------------------------------------------------
Dim VDlg As New PrintPreviewDialog()
VDlg.Document = PrintDocument1
VDlg.ShowDialog()
■ページセットアップダイアログを表示
Dim PSDlg As New PageSetupDialog
PSDlg.Document = PrintDocument1
PSDlg.ShowDialog()