Según 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 es más grande que una hoja de papel de 8.5 x 11. Aquí está un ejemplo de cómo he impreso 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 se podría sustituir por cualquier recipiente UIElement tales como StackPanel, lona, rejilla, ect. ImageViewer.Source debe establecerse en BitmapImage que está listo para imprimirse.
me ocurrió la idea de esta página: http://www.switchonthecode.com/tutorials/printing-in-wpf
Muchas gracias. Esto resolvió mi problema al imprimir una imagen. – user4134476