4

用紙サイズ4inch x 6inchに印刷したい WPF ウィンドウがあります。

このサイズをどこに設定すればよいかわかりませんか?? ウィンドウ サイズを使用して印刷していますが、ウィンドウ サイズが機能しません。私のプリンターは用紙サイズが固定されていません。
これは私の印刷コードです:

private void _print()
    {
        PrintDialog printDlg = new System.Windows.Controls.PrintDialog();
        //printDlg.ShowDialog();
        //get selected printer capabilities
        System.Printing.PrintCapabilities capabilities = printDlg.PrintQueue.GetPrintCapabilities(printDlg.PrintTicket);

        //get scale of the print wrt to screen of WPF visual
        double scale = Math.Min(capabilities.PageImageableArea.ExtentWidth / this.ActualWidth, capabilities.PageImageableArea.ExtentHeight /
                       this.ActualHeight);

        //Transform the Visual to scale
        this.LayoutTransform = new ScaleTransform(scale, scale);

        //get the size of the printer page
        Size sz = new Size(this.ActualWidth, this.ActualHeight);

        //update the layout of the visual to the printer page size.
        this.Measure(sz);
        this.Arrange(new Rect(new Point(capabilities.PageImageableArea.OriginWidth,  capabilities.PageImageableArea.OriginHeight), sz));

        //now print the visual to printer to fit on the one page.
        printDlg.PrintVisual(this, "Print Page");
    }
4

2 に答える 2

4

WPF1 unit = 1/96 of inchでは、この式を使用してサイズをインチで計算できます

以下のように、Paper のサイズに設定printDlg.PrintTicket.PageMediaSizeし、ウィンドウをその領域に印刷するように変換できます。

 private void _print()
 {
      PrintDialog printDlg = new System.Windows.Controls.PrintDialog();

       PrintTicket pt = printDlg.PrintTicket;
       Double printableWidth = pt.PageMediaSize.Width.Value;
       Double printableHeight = pt.PageMediaSize.Height.Value;

       Double xScale = (printableWidth - xMargin * 2) / printableWidth;
       Double yScale = (printableHeight - yMargin * 2) / printableHeight;


        this.Transform = new MatrixTransform(xScale, 0, 0, yScale, xMargin, yMargin);


    //now print the visual to printer to fit on the one page.
     printDlg.PrintVisual(this, "Print Page");
}
于 2013-09-26T05:15:20.537 に答える