Sos un maestro! Gracias por el ejemplo. Lo voy a probar, pero por lo que ví es 
exactamente lo que necesito.

GRACIAS!!!

Eliseo
  ----- Original Message ----- 
  From: Diego Cepero 
  To: vbnet List Member 
  Sent: Monday, March 03, 2008 2:34 PM
  Subject: [vbnet] Grabar o imprimir el contenido de un panel


  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