简体   繁体   中英

Printing bitmap from Silverlight - image blurry

I'm trying to print image from Silverlight application. I have pretty good quality scans (TIFF) with resolution 1696x2200

When I print - I get PrintableArea from PrintDocument and it's 816x1056

What I do - I resize bitmap to Printable area (to fit document to page) and result I get is blurry image. I understand this is scaling problem (most likely), but how do I scale properly so it looks good? When I display document inside Image and just set image size - it looks good.

For resizing I'm using WriteableBitmapEx extensions and tried both types of resize (Nearest neighbor and bilinear)

Code:

var printDocument = new PrintDocument(); 

            printDocument.PrintPage += (s, ea) =>
                {
                    var printableArea = ea.PrintableArea;

                    var bitmap = this.currentPreviewPage.FullBitmap.Resize((int)printableArea.Width, (int)printableArea.Height, WriteableBitmapExtensions.Interpolation.Bilinear);

                    var image = new Image { Source = bitmap };
                    var canvas = new Canvas { Width = bitmap.PixelWidth, Height = bitmap.PixelHeight };
                    canvas.Children.Add(image);

                    ea.PageVisual = canvas; 
                    ea.HasMorePages = false;
                }; 

            printDocument.PrintBitmap("Silverlight Bitmap Print");

How document looks on screen (inside Image)

在此输入图像描述

And this is printed:

在此输入图像描述

在声明Image元素时,请尝试设置Stretch属性,使其根据最大指定尺寸进行拉伸,而不是使用WriteableBitmapEx扩展:

var image = new Image { Source = bitmap, Stretch = Stretch.UniformToFill };

Blilinear过滤器往往会模糊图像。你可能想尝试WriteableBitmapExtensions.Interpolation.NearestNeighbor,看看你是否得到更好的结果

在我的情况下,设置UseLayoutRounding =“True”就足够了。

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