busqué opciones cómo imprimir controles WPF y encontré algunas soluciones. Necesito ajustar mi control impreso a la página de impresión mientras mantengo la relación de aspecto (mi control es cuadrado, cuadrícula de sudoku).WPF Impresión para ajustar página
Encontré una solución que redimensiona y reposiciona el control para que se ajuste a una página. Eso funciona bien, pero también reposiciona ese control en mi ventana.
aquí es el código que utilizo para la impresión y el escalamiento:
//get selected printer capabilities
System.Printing.PrintCapabilities capabilities = dialog.PrintQueue.GetPrintCapabilities(dialog.PrintTicket);
//get scale of the print wrt to screen of WPF visual
double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth/mrizka.ActualWidth, capabilities.PageImageableArea.ExtentHeight/mrizka.ActualHeight);
//Transform the Visual to scale
mrizka.LayoutTransform = new ScaleTransform(scale, scale);
//get the size of the printer page
Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, capabilities.PageImageableArea.ExtentHeight);
//update the layout of the visual to the printer page size.
mrizka.Measure(sz);
mrizka.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, capabilities.PageImageableArea.OriginHeight), sz));
dialog.PrintVisual(mrizka, mrizka.getID().ToString());
probé dos aproaches para resolver este:
Clon mi control y luego transformar clonado uno, unaffecting originales. No funcionó, por alguna razón terminé con una excepción: el DependencyObject provisto no es un contexto para este Freezable, pero extrañamente solo en algunos casos.
Revertir los cambios de tamaño y posición. Intenté llamar al método InvalidateArrange(), que parecía funcionar, pero solo durante la primera llamada del método de impresión. Durante la segunda llamada, no funcionó.
¿Qué debo hacer por favor, cualquier idea < gracias.
Deberá agregar referencias a System.Printing y ReachFramework. – StillLearnin
También parece hacer referencia a System.Windows.Media y System.Windows.Controls – Jeff
Esto no funciona correctamente para mí, el LayoutTransform parece ser ignorado sin importar qué tipo de Transform arroje sobre él. – Lennart