2012-08-31 17 views
7

Tengo un problema extraño con la impresión de un proyecto de WPF. Estoy imprimiendo una captura de pantalla de la aplicación para fines de informes, y todo eso funciona bien. Actualmente, el usuario presiona imprimir, aparece el cuadro de diálogo de impresión e imprimen la imagen de captura.Imprimir sin ShowDialog da páginas en blanco

Sin embargo, deseo poder imprimir directamente a la impresora predeterminada sin mostrar el cuadro de diálogo. Esto debería hacerse fácilmente comentando la declaración ShowDialog() y permitiendo que el resto simplemente suceda. La impresora todavía imprime, pero las páginas están siempre en blanco. ¿Alguien puede explicar este comportamiento?

private void PrintCurrentScreen() 
{ 
    PrintDialog PD = new PrintDialog(); 
    PD.PrintTicket.OutputColor = OutputColor.Grayscale; 
    PD.PrintTicket.OutputQuality = OutputQuality.Draft; 

    PrintTicket PT = new PrintTicket(); 
    PT.PageOrientation = PageOrientation.Landscape; 
    PT.CopyCount = 1; 
    PT.PageBorderless = System.Printing.PageBorderless.Borderless; 

    //---Blank pages print when commented out---// 
    //if (PD.ShowDialog() == true) 
    //{ 
    PD.PrintTicket = PT; 

    DrawingVisual DV = new DrawingVisual(); 
    DV.Offset = new Vector(20, 20); 
    DrawingContext DC = DV.RenderOpen(); 
    DC.DrawImage(previewimage.Source, new Rect(new Size(PD.PrintableAreaWidth - 40, PD.PrintableAreaHeight - 40))); 
    DC.Close(); 

    PD.PrintVisual(DV, "TEST"); 
    //} 
} 
+1

¿Ha encontrado una solución para esto, tengo el mismo problema, pero el problema es que este sucede con algunas PC con diferentes sistemas operativos, no todas, – safi

Respuesta

1

Trate de hacer una medida, organizar y UpdateLayout justo antes de la printvisual, así:

DV.Measure(new System.Windows.Size(PD.PrintableAreaWidth, 
       PD.PrintableAreaHeight)); 
DV.Arrange(new System.Windows.Rect(new System.Windows.Point(0, 0), 
       DV.DesiredSize)); 

DV.UpdateLayout(); 
PD.PrintVisual(DV, "TEST"); 
+0

Intenté este método y aún así terminé con páginas en blanco de la impresora. Terminé abandonando este método y en su lugar creé visuales de mis elementos xaml. Puse estos nuevos elementos en mi informe y se imprimieron muy bien. También hubo un beneficio adicional de control externo del diseño de página. –

Cuestiones relacionadas