简体   繁体   中英

Printing a WPF BitmapImage

What's the best way to print a BitmapImage? I come from a background in System.Drawing so I was thinking about converting it to a Bitmap and then printing it, but I'm thinking there's probably a better way.

Thanks!

Building upon Drew's answer, it is best to measure and arrange the container that is handed to the PrintVisual method. This will prevent an image that is larger than a 8.5 x 11 sheet of paper from being cut off. Here is an example of how I printed an image that was partially visible on-screen:

PrintDialog dlg = new PrintDialog();
bool? result = dlg.ShowDialog();

if (result.HasValue && result.Value)
{
    ImageViewer.Measure(new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight));
    ImageViewer.Arrange(new Rect(new Point(0, 0), ImageViewer1.DesiredSize));

    dlg.PrintVisual(ImageViewer, "Print a Large Image");
}

ImageViewer in my example could be replaced with any UIElement container such as a stackpanel, canvas, grid, ect. ImageViewer.Source should be set to the BitmapImage that is ready to be printed.

I got the idea from this page: http://www.switchonthecode.com/tutorials/printing-in-wpf

Check out the PrintDialog class . All you should need to do is call the PrintVisual method passing in an Image as the visual that has your BitmapImage as a source.

You may want to setup other printing options, but you'll discover those as you explore PrintDialog and related APIs.

illogial's answer has the problem, that's always stretching the image to pagesize and cuts off some content at trying this.


Therefore i wrote a own solution, which only stretch(is this the right word?) if the image is to large, can use multiply copies and pageorientations.

Here is the Code

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM