8

WPF プロジェクトからの印刷で奇妙な問題が発生しています。レポート用にアプリケーションのスクリーン キャプチャを印刷していますが、すべて問題なく動作しています。現在、ユーザーが印刷を押すと、印刷ダイアログが表示され、キャプチャ画像が印刷されます。

ただし、ダイアログ ボックスを表示せずに、既定のプリンターに直接印刷できるようにしたいと考えています。これは、ステートメントをコメントアウトしてShowDialog()、あとはそのままにしておくことで簡単に実行できます。プリンターは引き続き印刷しますが、ページは常に白紙です。誰でもこの動作を説明できますか?

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");
    //}
}
4

1 に答える 1

2

次のように、printvisual の直前に Measure、Arrange、および UpdateLayout を実行してみてください。

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");
于 2012-09-14T20:59:45.950 に答える