你好,
我需要能够从我的 wpf 应用程序打印。我只是想打印交易收据。

我发现使用

PrintDialog pDialog = new PrintDialog();

pDialog.PrintVisual(new Receipt("transaction name","my store"), "documentTitle");

把戏做得很好。 “Receipt() 是一个呈现交易细节的用户控件。

你打算怎么做?这是正确的方法吗?如果我不知道要使用的打印机怎么办?我应该让用户控件的宽度与热敏收据打印机一样宽吗?

任何建议都会很棒!

最佳答案

这是我为打印 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");
}

这似乎工作得很好。

关于c# - 使用 wpf 4 打印的最佳方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4662765/

10-17 01:11