Impresión de una imagen de mapa de bits WPF
Pregunta
¿Cuál es la mejor manera de imprimir una imagen de mapa de bits?Tengo experiencia en System.Drawing, así que estaba pensando en convertirlo a un mapa de bits y luego imprimirlo, pero creo que probablemente haya una manera mejor.
¡Gracias!
Solución
Basándose en la respuesta de Drew, lo mejor es medir y organizar el contenedor que se entrega al método PrintVisual.Esto evitará que se corte una imagen que sea mayor que una hoja de papel de 8,5 x 11.Aquí hay un ejemplo de cómo imprimí una imagen que era parcialmente visible en la pantalla:
PrintDialog dlg = new PrintDialog();
bool? result = dlg.ShowDialog();
if (result.HasValue && result.Value)
{
ImageViewer.Measure(new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight));
ImageViewer.Arrange(new Rect(new Point(0, 0), ImageViewer1.DesiredSize));
dlg.PrintVisual(ImageViewer, "Print a Large Image");
}
ImageViewer en mi ejemplo podría reemplazarse con cualquier contenedor UIElement, como un panel de pila, un lienzo, una cuadrícula, etc.ImageViewer.Source debe configurarse en BitmapImage que esté listo para imprimir.
Saqué la idea de esta página:http://www.switchonthecode.com/tutorials/printing-in-wpf
Otros consejos
la clase PrintDialog
. Todo lo que necesitará hacer es llamar la PrintVisual
método que pasa en un Image
como el visual que tiene su BitmapImage
como fuente.
Es posible que desee configurar otras opciones de impresión, pero vas a descubrir a los a medida que explora PrintDialog y API relacionadas.