Hola, 

 

            Hacé un proyecto con un formulario, que tenga un panel. Agregá 
varios controles a ese panel, y pegá el siguiente código en el formulario:

 

Imports System.Windows.Forms

Imports System.Drawing

Imports System.Drawing.Imaging

Imports System.Drawing.Printing

 

Public Class Form1

 

   Private Sub btnGenerarJpg_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles btnGenerarJpg.Click

      GuardarPanelComoJpg(Me.Panel1, "c:\temp\panel1.jpg")

   End Sub

 

   Private Sub btnImprimir_Click(ByVal sender As System.Object, ByVal e As 
System.EventArgs) Handles btnImprimir.Click

      ImprimirPanel(Me.Panel1)

   End Sub

 

   Private Sub GuardarPanelComoJpg(ByVal panel As Panel, _

                                   ByVal ruta As String)

 

      Dim rect As Rectangle = panel.ClientRectangle

      Dim jpg As New Bitmap(rect.Width, rect.Height)

 

      panel.DrawToBitmap(jpg, rect)

 

      jpg.Save(ruta, ImageFormat.Jpeg)

   End Sub

 

   Private Sub ImprimirPanel(ByVal panel As Panel)

 

      Dim pd As New ImpresorPanel(panel)

      Dim pvw As New PrintPreviewDialog()

 

      pvw.Document = pd

      pvw.ShowDialog()

   End Sub

End Class

 

Public Class ImpresorPanel

   Inherits PrintDocument

 

   Private _panel As Panel

 

   Public Sub New(ByVal panel As Panel)

      _panel = panel

   End Sub

 

   Public ReadOnly Property Panel() As Panel

      Get

         Return _panel

      End Get

   End Property

 

   Protected Overrides Sub OnPrintPage(ByVal e As 
System.Drawing.Printing.PrintPageEventArgs)

      MyBase.OnPrintPage(e)

 

      Dim rect As Rectangle = Me.Panel.ClientRectangle

      Dim bmp As New Bitmap(rect.Width, rect.Height)

 

      Me.Panel.DrawToBitmap(bmp, rect)

      e.Graphics.DrawImage(bmp, 0, 0)

   End Sub

End Class

 

            Si querés imprimir en lugar de hacer una vista previa, llamá a 
pd.Print() en lugar de pvw.ShowDialog().

            Un saludo.

 

  _____  

De: [email protected] [mailto:[EMAIL PROTECTED] En nombre de Eliseo Alegre
Enviado el: Lunes, 03 de Marzo de 2008 10:59 a.m.
Para: vbnet List Member
Asunto: [vbnet] Grabar o imprimir el contenido de un panel

 

Lista:

 

alguien sabe como puedo grabar una imagen (jpg) de todo el contenido de un 
panel? o como puedo hacer para que ese contenido se imprima?

 

Gracias

 

Eliseo

Responder a