在WPF中打印和缩放图像

时间:2012-08-09 18:23:28

标签: wpf image printing scaling

我正在尝试使用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");

}

问题是,图像总是太大而且标题中的文字打印不正确(我只看到几条垂直线)。我知道我的问题在于我设置尺寸和/或缩放的方式,但我只是看不到它。

有什么建议吗?

0 个答案:

没有答案