0

Silverlightアプリケーションから画像を印刷しようとしています。解像度1696x2200のかなり高品質のスキャン(TIFF)があります

私が印刷するとき-私はPrintableAreaから得ます、PrintDocumentそしてそれは816x1056です

私がすること-ビットマップを印刷可能な領域にサイズ変更し(ドキュメントをページに合わせるため)、結果はぼやけた画像になります。これがスケーリングの問題であることは理解していますが(ほとんどの場合)、見栄えを良くするために適切にスケーリングするにはどうすればよいですか?画像内にドキュメントを表示し、画像サイズを設定するだけで、見栄えがします。

サイズ変更には、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");

ドキュメントが画面上でどのように見えるか(画像内)

ここに画像の説明を入力してください

そしてこれは印刷されます:

ここに画像の説明を入力してください

4

3 に答える 3

2

WriteableBitmapEx拡張機能を使用するのではなく、要素を宣言するときに、指定された最大寸法に基づいて拡大するようにStretchImageプロパティを設定してみてください。

var image = new Image { Source = bitmap, Stretch = Stretch.UniformToFill };
于 2012-10-22T19:15:41.697 に答える
0

ブリリニアフィルターは画像をぼかす傾向があります。代わりにWriteableBitmapExtensions.Interpolation.NearestNeighborを試して、より良い結果が得られるかどうかを確認することをお勧めします。

于 2012-10-22T19:19:36.923 に答える
0

私の場合、UseLayoutRounding="True"を設定するだけで十分でした。

于 2013-11-13T21:35:46.153 に答える