Impresión de un formulario (Windows Forms para .NET)
Como parte del proceso de desarrollo, normalmente querrá imprimir una copia del formulario de Windows Form. En el ejemplo de código siguiente se muestra cómo imprimir una copia del formulario actual mediante el método CopyFromScreen.
Ejemplo
Para ejecutar el código de ejemplo, agregue dos componentes a un formulario con la siguiente configuración:
Object | Property\Event | Valor |
---|---|---|
Botón | Name |
Button1 |
Click |
Button1_Click |
|
PrintDocument | Name |
PrintDocument1 |
PrintPage |
PrintDocument1_PrintPage |
El siguiente código se ejecuta cuando se hace clic en el Button1
. El código crea un objeto Graphics
a partir del formulario y guarda su contenido en una variable Bitmap
denominada memoryImage
. Se llama al método PrintDocument.Print, que invoca el evento PrintPage. El controlador de eventos de impresión dibuja el mapa de bits memoryImage
en el objeto Graphics
de la página de la impresora. Cuando se devuelve el código del controlador de eventos de impresión, se imprime la página.
namespace Sample_print_win_form1
{
public partial class Form1 : Form
{
Bitmap memoryImage;
public Form1()
{
InitializeComponent();
}
private void Button1_Click(object sender, EventArgs e)
{
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, s);
printDocument1.Print();
}
private void PrintDocument1_PrintPage(
System.Object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(memoryImage, 0, 0);
}
}
}
Public Class Form1
Dim memoryImage As Bitmap
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim myGraphics As Graphics = Me.CreateGraphics()
Dim s As Size = Me.Size
memoryImage = New Bitmap(s.Width, s.Height, myGraphics)
Dim memoryGraphics As Graphics = Graphics.FromImage(memoryImage)
memoryGraphics.CopyFromScreen(Me.Location.X, Me.Location.Y, 0, 0, s)
PrintDocument1.Print()
End Sub
Private Sub PrintDocument1_PrintPage(
ByVal sender As System.Object,
ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles PrintDocument1.PrintPage
e.Graphics.DrawImage(memoryImage, 0, 0)
End Sub
End Class
Programación sólida
Las condiciones siguientes pueden provocar una excepción:
No tiene permiso para acceder a la impresora.
No hay ninguna impresora instalada.
Seguridad de .NET
Para ejecutar este ejemplo de código, debe tener permiso para acceder a la impresora que usa con el equipo.
Consulte también
.NET Desktop feedback