Imprimir en WPF


En WPF podemos imprimir documentos y objetos visuales, como Canvas, Grid, Paneles, etc.

Para probar, creamos un proyecto y modificamos la pantalla, agregando lo siguiente en el xaml:


<Window x:Class="Aplicacion.Window1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Window1" Height="463" Width="689">

    <Canvas>

        <Button Canvas.Left="250" Canvas.Top="366" Height="47" Name="button1" Width="113" Click="button1_Click">Imprimir</Button>

        <Image Canvas.Left="25" Canvas.Top="36" Height="242" Name="image1" Stretch="Fill" Width="289" Source="drizzt.jpg"/>

        <TextBlock Canvas.Left="344" Canvas.Top="36" Height="242" Name="textBlock1" Width="311" Background="CornflowerBlue" Foreground="White" FontSize="16" TextWrapping="WrapWithOverflow" Text="Esto es un ejemplo de cualquier texto. Para continuar con el texto . bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla  bla bla bla  bla bla bla " />

        <Label Canvas.Left="370" Canvas.Top="4" Height="34" Name="label1" Width="114" FontSize="18">Texto:</Label>

    </Canvas>

</Window>

 

El botón Imprimir nos va a preguntar si deseamos imprimir el texto, si escogemos que sí, se imprime lo que se encuentra en el texto, si escogemos que no, se imprimirá la ventana:


private void button1_Click(object sender, RoutedEventArgs e)

            {

                  PrintDialog dialog = new PrintDialog();

                  MessageBoxResult respuesta = MessageBox.Show("Desea imprimir el texto?, si no, se imprimira la aplicación","Impresión",MessageBoxButton.YesNoCancel) ;

                  if (respuesta == MessageBoxResult.Yes)

                  {

                        // Imprimir el texto

                        if (dialog.ShowDialog() == true)

                        {

                              String texto = textBlock1.Text;

                              Run r = new Run(texto);

                              Paragraph parrafo = new Paragraph();

                              parrafo.Inlines.Add(r);

                              FlowDocument doc = new FlowDocument(parrafo);

                              doc.PagePadding = new Thickness(100);

                              dialog.PrintDocument(((IDocumentPaginatorSource)doc).DocumentPaginator, texto);

                        }

                  }

                  else if (respuesta == MessageBoxResult.No)

                  {

                        // Imprimir la pantalla

                        if (dialog.ShowDialog() == true)

                        {

                              dialog.PrintVisual(this, "Impresión");

                        }

                  }

            }

 

Al ejecutar:

 

Si escogemos Si, se nos muestra la ventana para escoger la impresora y las preferencias, como no tengo impresora voy a enviar el archivo a OneNote 2007:

 

Ahora si escogemos que No:

 

Listo, es muy sencillo.

Anuncios

2 pensamientos en “Imprimir en WPF

Deseas comentar o sugerir algo?

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s