| |
VB Printing Tips
1. How To Print a Form Image
This example shows how to capture a Windows Form image and print it. The
image is resized and centered to fit the Print Margins.
The example shows the Print Preview dialog. To print click the Print
button on the dialog.
Many programmers attempt this with the old Power Pack Printform
control. However that control is out of date, limited, and not
easily modified. There is really no need to use the Power Pack it is all
built into VB now.
Program Output Print Preview.
'prints form fit to page and centered with preview
Public Class Form1
Private Sub Form1_Load(sender As
Object, e As EventArgs) Handles MyBase.Load
Text = "Print Form Fit to Page Example"
Size = New Size(1500, 700)
BackgroundImage = Image.FromFile("c:\bitmaps\rusty.jpg")
BackgroundImageLayout = ImageLayout.Zoom
Dim preview As New PrintPreviewDialog
Dim pd As New System.Drawing.Printing.PrintDocument
pd.DefaultPageSettings.Landscape = True
AddHandler pd.PrintPage, AddressOf OnPrintPage
preview.Document = pd
preview.ShowDialog()
End Sub
Private Sub OnPrintPage(ByVal sender As Object, ByVal e As
System.Drawing.Printing.PrintPageEventArgs)
'create a memory bitmap and size to the form
Using bmp As Bitmap = New Bitmap(Me.Width, Me.Height)
'draw the form on the memory bitmap
Me.DrawToBitmap(bmp, New Rectangle(0, 0, Me.Width,
Me.Height))
'draw the form image on the printer graphics sized and
centered to margins
Dim ratio As Single = CSng(bmp.Width / bmp.Height)
If ratio > e.MarginBounds.Width / e.MarginBounds.Height
Then
e.Graphics.DrawImage(bmp,
e.MarginBounds.Left,
CInt(e.MarginBounds.Top + (e.MarginBounds.Height /
2) - ((e.MarginBounds.Width / ratio) / 2)),
e.MarginBounds.Width,
CInt(e.MarginBounds.Width / ratio))
Else
e.Graphics.DrawImage(bmp,
CInt(e.MarginBounds.Left + (e.MarginBounds.Width /
2) - (e.MarginBounds.Height * ratio / 2)),
e.MarginBounds.Top,
CInt(e.MarginBounds.Height * ratio),
e.MarginBounds.Height)
End If
End Using
End Sub
End Class
|
To use the examples make a new project with one Form. Past the example
code into the form as shown. Run the example.
|