2012-10-22 50 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」。