Friend WithEvents myReport As System.Drawing.Printing.PrintDocument
Dim pageNum As Integer
Dim myFont As System.Drawing.Font
Private Sub generatePreview()
pageNum = 1
myFont = New Font("Arial", 16, CType(System.Drawing.FontStyle.Bold, System.Drawing.FontStyle))
myReport = New System.Drawing.Printing.PrintDocument
Dim ppd As PrintPreviewDialog = New PrintPreviewDialog
ppd.Document = myReport
ppd.WindowState = FormWindowState.Maximized
ppd.PrintPreviewControl.Zoom = 0.5
ppd.ShowDialog()
End Sub
Private Sub PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles myReport.PrintPage
'heading
e.Graphics.DrawString("Hello World", myFont, Brushes.Blue, 50, 50)
'checker board
Dim j As Integer
Dim k As Integer
For j = 0 To 7
For k = 0 To 7
If (j + k) Mod 2 = 0 Then
e.Graphics.FillRectangle(Brushes.Black, 100 + j * 40, 100 + k * 40, 40, 40)
Else
e.Graphics.FillRectangle(Brushes.White, 100 + j * 40, 100 + k * 40, 40, 40)
End If
Next k
Next j
e.Graphics.DrawRectangle(Pens.Black, 100, 100, j * 40, k * 40)
'page numbering
Dim stringSize As SizeF = e.Graphics.MeasureString("Page " & pageNum, myFont)
e.Graphics.DrawString("Page " & pageNum, myFont, Brushes.Black, e.PageSettings.PrintableArea.Width - stringSize.Width, e.PageSettings.PrintableArea.Height - stringSize.Height)
If pageNum < 2 Then
e.HasMorePages = True
End If
pageNum += 1
End Sub