2012-10-22 32 views
0

我试图从Silverlight应用程序打印图像。我有很好的品质扫描(TIFF)具有1696x2200从Silverlight打印位图 - 图像模糊

分辨率当我打印 - 我得到PrintDocumentPrintableArea,它是816x1056

我做什么 - 我调整位图打印区域(以适应文档页面)和我得到的结果是模糊的图像。我知道这是缩放问题(很可能),但我如何正确缩放以使它看起来很好?当我在Image中显示文档并设置图像大小时 - 看起来不错。

对于调整我使用WriteableBitmapEx扩展和尝试这两种类型的大小调整(近邻和双线性)的

代码:

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"); 

文档如何在屏幕上看起来(内图片)

enter image description here

这是印:

enter image description here

回答

2

而不是使用WriteableBitmapEx扩展,声明你Image元素时,尝试设置Stretch属性,使之绵延根据您指定的最大尺寸:

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

差不多!这不起作用,但指向正确的方向。即使我在画布上设置尺寸 - 图像不会伸展。但它很容易解决:'新的图像{宽度= ...,高度= ....},我得到了很好的图片 – katit

0

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

+0

比它的黑色方块迷宫 – katit

0

在我的情况下,它足以设置UseLayoutRounding =“True”。