2011-01-11 6 views
4

Howdy, Мне нужно иметь возможность печатать из моего приложения wpf. Я просто пытаюсь распечатать квитанцию ​​о транзакции.Лучший способ печати с использованием wpf 4

Я обнаружил, что с помощью

PrintDialog pDialog = new PrintDialog(); 

pDialog.PrintVisual (новый прочтении ("имя транзакции", "мой магазин"), "DocumentTitle");

Отличный трюк. «Receipt() - это usercontrol, который выводит данные транзакции.

Как вы это делаете? Правильно ли это? Что делать, если я не знаю, какой принтер будет использоваться? Я делаю UserControl только по ширине термопринтера получения

Любые предложения было бы здорово

ответ

4

Это то, что я могу сделать, чтобы напечатать управление WPF:?!

System.Windows.Controls.PrintDialog printDlg = new System.Windows.Controls.PrintDialog(); 
if (printDlg.ShowDialog() == true) 
{ 
    System.Printing.PrintCapabilities capabilities = 
     printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket); 

    double scale = Math.Min(
        capabilities.PageImageableArea.ExtentWidth/control.ActualWidth, 
        capabilities.PageImageableArea.ExtentHeight/control.ActualHeight); 

    control.LayoutTransform = new System.Windows.Media.ScaleTransform(scale, scale); 

    Size sz = new Size(capabilities.PageImageableArea.ExtentWidth, 
         capabilities.PageImageableArea.ExtentHeight); 

    control.Measure(sz); 
    control.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth, 
     capabilities.PageImageableArea.OriginHeight), sz)); 

    printDlg.PrintVisual(control, "My App"); 
} 

Это, кажется, работает хорошо .

Смежные вопросы