1

WPFを使用してタイトル付きの画像を印刷しようとしています。

生の形式 (データベースから取得する画面上のコントロールから画像を取得しています) では、画像がページよりも大きいため、拡大縮小する必要があります。

ページの上部にタイトルを配置し (タイトルにさらに行を追加することもできます)、残りのページ領域に合わせて画像をスケーリングします (アスペクト比を維持しながら)。また、画像の向きに基づいてページを正しく配置したいと考えています。

私がこれまでに持っているコード(さまざまなページから盗んだ)...

PrintDialog printDialog = new PrintDialog();
printDialog.PrintTicket.PageOrientation = this.image.ActualWidth > this.image.ActualHeight ? PageOrientation.Landscape : PageOrientation.Portrait;

if (printDialog.ShowDialog() == true) {

    Size size = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
    StackPanel stackPanel = new StackPanel { Orientation = Orientation.Vertical, RenderSize = size };

    TextBlock title = new TextBlock { Text = @"Form", FontSize = 20 };
    stackPanel.Children.Add(title);

    Image image = new Image { Source = this.image.Source, Stretch = Stretch.Uniform };
    image.RenderTransform = new ScaleTransform(1, 1);
    stackPanel.Children.Add(image);

    stackPanel.Measure(size);
    stackPanel.Arrange(new Rect(new Point(0, 0), stackPanel.DesiredSize));

    printDialog.PrintVisual(stackPanel, @"Form image");

}

問題は、画像が常に大きすぎて、タイトルのテキストが正しく印刷されないことです (数本の縦線が表示されるだけです)。サイズやスケーリングを設定する方法に問題があることはわかっていますが、それを見ることができません。

助言がありますか?

4

0 に答える 0