2012-08-31 17 views
7

Mam dziwny problem z drukowaniem z projektu WPF. Drukuję zrzut ekranu aplikacji do celów raportowania i wszystko działa dobrze. Obecnie użytkownik naciśnie przycisk drukowania, pojawi się okno dialogowe drukowania i wydrukuje obraz przechwytywania.Drukowanie bez ShowDialog daje puste strony

Jednak chcę mieć możliwość drukowania bezpośrednio na domyślnej drukarce bez wyświetlania okna dialogowego. Należy to łatwo zrobić, komentując oświadczenie ShowDialog() i pozwalając, aby reszta po prostu się wydarzyła. Drukarka nadal drukuje, ale strony są zawsze puste. Czy ktoś może wyjaśnić to zachowanie?

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

znaleźliście jakieś rozwiązanie dla tego, mam ten sam problem, ale problemem jest to, że dzieje się z niektórymi komputerami z różnymi systemami operacyjnymi - nie wszystkie - – safi

Odpowiedz

1

Spróbuj zrobić miarą Rozmieszczanie i UpdateLayout tuż przed printvisual, tak:

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

Próbowałem tej metody i nadal kończyłem z pustymi stronami z drukarki. W końcu zrezygnowałem z tej metody i zamiast tego stworzyłem wizualizacje z moich elementów xaml. Umieściłem te nowe elementy na moim raporcie i wydrukowałem je w porządku. Dodatkową korzyścią była zewnętrzna kontrola układu strony. –

Powiązane problemy