|
|
Title | Provide print preview with different scales |
Description | This example shows how to provide print preview with different scales in Visual Basic 6. It uses a single drawing routine to draw either on a PictureBox or on the Printer object. |
Keywords | print, print preview, scale |
Categories | Graphics, Controls |
|
|
The program uses a single routine, DrawPrintout, to draw on either a PictureBox or on the Printer object. This routine takes as a parameter the object on which it should draw. In this example, the routine draws some text, a rectangle, and a bitmap.
|
|
' Draw the printout on prn, either a PictureBox
' or the Printer.
Private Sub DrawPrintout(prn As Object)
' Make the object use 10 point Courier New.
' It is likely to be available on both the
' printer and in PictureBoxes.
prn.Font.Name = "Courier New"
prn.Font.Size = 10
prn.DrawWidth = 4
' Draw a 1" by 3" square in the upper left.
prn.Line (0, 0)-(3, 1), , B
' Center the text within the square.
prn.CurrentX = (3 - prn.TextWidth(Text1.Text)) / 2
prn.CurrentY = (1 - prn.TextHeight(Text1.Text)) / 2
prn.Print Text1.Text
' Copy the smiley face bitmap onto prn.
prn.PaintPicture SmileyPict.Picture, 0, 1.25
End Sub
|
|
To display a print preview, the program passes the DrawPrintout subroutine a hidden PictureBox. If then displays the preview form.
|
|
' Display a print preview.
Private Sub mnuFilePrintPreview_Click()
Dim wid As Single
Dim hgt As Single
' Make PreviewForm.HiddenPict behave as much
' like the Printer as possible.
' Make it 8.5" by 11" in real size.
wid = PreviewForm.ScaleX(8.5, vbInches, _
PreviewForm.ScaleMode)
hgt = PreviewForm.ScaleY(11, vbInches, _
PreviewForm.ScaleMode)
PreviewForm.HiddenPict.Width = wid
PreviewForm.HiddenPict.Height = hgt
' Make it use the same scale as the Printer.
PreviewForm.HiddenPict.Scale (-1, -1.5)-(7.5, 9.5)
' Draw the preview onto the hidden PictureBox.
DrawPrintout PreviewForm.HiddenPict
' Display the preview form.
PreviewForm.ShowPreview
End Sub
|
|
The preview form displays the preview image at different scales by sizing the preview PictureBox appropriately and then using PaintPicture to copy the full-scale hidden picture onto this PictureBox.
|
|
' View at scale 1 / Index.
Private Sub mnuSetScale_Click(Index As Integer)
Dim i As Integer
Dim wid As Single
Dim hgt As Single
' Check the selected menu scale item.
mnuSetScale(1).Checked = False
mnuSetScale(2).Checked = False
mnuSetScale(4).Checked = False
mnuSetScale(Index).Checked = True
' Make PreviewPict the correct size.
wid = (PreviewPict.Width - _
PreviewPict.ScaleWidth) + _
HiddenPict.Width / Index
hgt = (PreviewPict.Height - _
PreviewPict.ScaleHeight) + _
HiddenPict.Height / Index
PreviewPict.Move 0, 0, wid, hgt
' Copy the hidden picture into PreviewPict.
PreviewPict.PaintPicture HiddenPict.Image, _
0, 0, _
PreviewPict.ScaleWidth, _
PreviewPict.ScaleHeight
End Sub
|
|
To create a printout, the program calls subroutine DrawPrintout, passing it the Printer object.
|
|
' Print the document.
Private Sub mnuFilePrint_Click()
' Draw the printout onto the Printer object.
DrawPrintout Printer
' Send the printout to the printer.
Printer.EndDoc
End Sub
|
|
To keep things simple, this example is not very fancy. My book Advanced Visual Basic Techniques shows how to make a much fancier preview including preview at multiple scales and scrolling through the preview image.
|
|
|
|
|
|