Permitindo a visualização de impressão em projetos que usam o
objeto Printer
Vamos mostrar como permitir a seu projeto , ao utilizar o objeto Printer, a visualização da impressão. Vamos lá...
A aparência do formulário deverá ser a seguinte:
![]() |
Insira o seguinte código no formulário:
Option Explicit
Private Sub Command4_Click()
Unload Me
End Sub
----------------------------------------------------------------------------------
Private Sub Form_Load()
CommonDialog1.CancelError = True
Command1.Caption = "Carrega Imagem"
Command2.Caption = "Visualiza Impressão"
Command3.Caption = "Imprimir"
End Sub
----------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim sFileFilter As String
On Error GoTo ErrHandler
sFileFilter = "Arqs. Bitmap (*.bmp)|*.bmp|"
sFileFilter = sFileFilter & "Arqs. GIF (*.gif)|*.gif|"
sFileFilter = sFileFilter & "Arqs. Icon (*.ico)|*.ico|"
sFileFilter = sFileFilter & "Arqs. JPEG (*.jpg)|*.jpg|"
sFileFilter = sFileFilter & "Windows MetaFiles (*.wmf)|.wmf"
With CommonDialog1
.Filter = sFileFilter
.ShowOpen
If .FileName <> " " Then
picture2.Picture = LoadPicture(.FileName)
End If
End With
ErrHandler:
Exit Sub
End Sub
----------------------------------------------------------------------------------
Private Sub Command2_Click()
Dim dRatio As Double
dRatio = ScalePicPreviewToPrinterInches(Picture1)
PrintRoutine Picture1, dRatio
End Sub
----------------------------------------------------------------------------------
Private Sub Command3_Click()
Printer.ScaleMode = vbInches
PrintRoutine Printer
Printer.EndDoc
End Sub
----------------------------------------------------------------------------------
Private Function ScalePicPreviewToPrinterInches _
(picPreview As PictureBox) As Double
Dim Ratio As Double ' Ratio between Printer and Picture
Dim LRGap As Double, TBGap As Double
Dim HeightRatio As Double, WidthRatio As Double
Dim PgWidth As Double, PgHeight As Double
Dim smtemp As Long
' Pega o tamanho fisico da pagina em polegadas ( Inches )
PgWidth = Printer.Width / 1440
PgHeight = Printer.Height / 1440
' Econtre o tamanho da area não imprimível
smtemp = Printer.ScaleMode
Printer.ScaleMode = vbInches
LRGap = (PgWidth - Printer.ScaleWidth) / 2
TBGap = (PgHeight - Printer.ScaleHeight) / 2
Printer.ScaleMode = smtemp
picPreview.ScaleMode = vbInches
HeightRatio = picPreview.ScaleHeight / PgHeight
WidthRatio = picPreview.ScaleWidth / PgWidth
If HeightRatio < WidthRatio Then
Ratio = HeightRatio
smtemp = picPreview.Container.ScaleMode
picPreview.Container.ScaleMode = vbInches
picPreview.Width = PgWidth * Ratio
picPreview.Container.ScaleMode = smtemp
Else
Ratio = WidthRatio
smtemp = picPreview.Container.ScaleMode
picPreview.Container.ScaleMode = vbInches
picPreview.Height = PgHeight * Ratio
picPreview.Container.ScaleMode = smtemp
End If
' Define as propriedades do picture box
picPreview.Scale (0, 0)-(PgWidth, PgHeight)
picPreview.Font.Name = Printer.Font.Name
picPreview.FontSize = Printer.FontSize * Ratio
picPreview.ForeColor = Printer.ForeColor
picPreview.Cls
ScalePicPreviewToPrinterInches = Ratio
End Function
----------------------------------------------------------------------------------
Private Sub PrintRoutine(objPrint As Object,Optional Ratio As Double = 1)
' As dimensoes estao em polegadas
' Imprime alguns gráficos
objPrint.Line (1, 1)-(1 + 6.5, 1 + 9), , B
objPrint.Line (1.1, 2)-(1.1, 2)
objPrint.PaintPicture picture2, 1.1, 1.1, 0.8, 0.8
objPrint.Line (2.1, 1.2)-(2.1 + 5.2, 1.2 + 0.7), _
RGB(200, 200, 200), BF
' Imprime o titulo
With objPrint
.Font.Name = "Arial"
.CurrentX = 2.3
.CurrentY = 1.3
.FontSize = 35 * Ratio
objPrint.Print "Impressão no VB"
End With
' Imprime alguns circulos
Dim x As Single
For x = 3 To 5.5 Step 0.2
objPrint.Circle (x, 3.5), 0.75
Next
' Imprime algum texto
With objPrint
.Font.Name = "Courier New"
.FontSize = 30 * Ratio
.CurrentX = 1.5
.CurrentY = 5
objPrint.Print "Visualizando Impressão"
.FontSize = 24 * Ratio
.CurrentX = 1.5
.CurrentY = 6.5
objPrint.Print "Simples e fácil"
.FontSize = 18 * Ratio
.CurrentX = 1.5
.CurrentY = 8
objPrint.Print "Agora basta imprimir ...."
End With
End Sub
|
Execute o projeto , e , clique no botão Carrega Imagem , selecionando uma imagem qualquer. A seguir clique no botão Visualiza Impressão , a impressão será visualizada no controle PictureBox. Para imprimir clique no botão Imprimir. Veja projeto em tempo de execução abaixo:
![]() |
Gostou??? Até a próxima dica...
|
Veja os
Destaques e novidades do SUPER DVD Visual Basic
(sempre atualizado) : clique e confira !
Quer migrar para o VB .NET ?
Quer aprender C# ??
Quer aprender os conceitos da Programação Orientada a objetos ? Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ? |
Gostou ?
Compartilhe no Facebook
Compartilhe no Twitter
Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB.NET - Conhecendo as estruturas de controle - Macoratti ...
VB .NET - Copiando arquivos entre diretórios - Macoratti.net