我正在尝试从Silverlight应用程序打印图像。我的扫描质量很好(TIFF),分辨率为1696x2200
当我打印时 - 我从PrintableArea
得到PrintDocument
并且它是816x1056
我做什么 - 我将位图调整为可打印区域(以适应文档到页面),结果我得到的是模糊图像。我知道这是缩放问题(最有可能),但我如何正确缩放以使其看起来不错?当我在Image中显示文档并只设置图像大小时 - 看起来不错。
为了调整大小我正在使用WriteableBitmapEx扩展并尝试了两种类型的resize(最近邻和双线性)
代码:
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");
文档在屏幕上的显示方式(图像内部)
打印出来:
答案 0 :(得分:2)
在声明Image
元素时,请尝试设置Stretch属性,使其根据您指定的最大尺寸进行拉伸,而不是使用WriteableBitmapEx扩展:
var image = new Image { Source = bitmap, Stretch = Stretch.UniformToFill };
答案 1 :(得分:0)
Blilinear滤镜会使图像模糊。你可能想尝试WriteableBitmapExtensions.Interpolation.NearestNeighbor而不是看看你是否会得到更好的结果
答案 2 :(得分:0)
在我的情况下,设置UseLayoutRounding =“True”就足够了。