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