1

アプリのスクリーンショットを撮ってビットマップに保存しています。ここまでは順調ですね。次に、そのビットマップを標準のプリンターでさまざまな解像度で印刷できるようにしたいと考えています (一部のユーザーはネットワークプリンターを使用しており、「高品質」のスクリーンショットを印刷するには時間がかかる場合があります。そのような印刷は機能しますが、私は解像度、またはプリントの画像の品質について質問があります。

印刷するには、PrintDocument.Printメソッドを使用します。そのメソッドでは、PrinterSettings.PrinterResolutionsプロパティを to と to などの異なる値に設定しようPrinterResolutionKind.LowとしましたPrinterResolutionKind.High。プリンターの出力に違いがあることを期待していましたが、どちらも同じように見えました(バルク標準レーザープリンター)。基本的に、に設定するPrinterResolutionKind.Lowと、ネットワーク プリンターのネットワーク トラフィックが少なくなると考えました。

それで、私は正しいアプローチを使用していますか?または、別の s で印刷するときにビットマップを何らかの方法で変更する必要がありPrinterResolutionKindますか?

どんな助けでも大歓迎です。

4

2 に答える 2

1

すべてのプリンタ ドライバが複数の解像度をサポートしているわけではないため、プリンタの解像度を に設定PrinterResolutionKind.Lowすると、 と同じ出力が生成される場合がありますPrinterResolutionKind.High

設定が適用されている可能性もありますが、印刷出力では違いが目立ちません。設定によって帯域幅が低下しているかどうかを確認するより良い方法は、プリンターを一時停止してスプール ファイルのサイズを確認することです。スプール ファイルのサイズが小さい場合は、変更によって意図した効果が得られています。

プリンタ ドライバによってはPrinterResolutionKind.Draft、よりも小さいスプール ファイルが生成される場合がありますPrinterResolutionKind.Low

また、次のように DefaultPageSettings を設定していることを確認してください。

printDoc.DefaultPageSettings.PrinterResolution = PrinterResolutionKind.Draft

于 2013-10-09T14:35:13.040 に答える
1

バルク標準レーザープリンター

レーザー プリンターで違いが見られる可能性はほとんどありません。レーザー プリンターはベクターデバイスです。たとえば、ラスタ デバイスであるドット マトリックス プリンタとは対照的に、複数の印刷解像度をサポートする必要があります。ドット マトリックス プリンターでグラフィックスを印刷することは、草が生えるのを見るようなものです。

これは自分で行う必要があります。Bitmap(Image, int, int) コンストラクターを使用すると、ビットマップをより小さなサイズに再スケーリングできます。次に、PrintPage イベント ハンドラーで e.Graphics.DrawImage(Image, Rectangle) オーバーロードを使用して、元のサイズに再スケーリングします。または e.Graphics.ScaleTransform()。プリンタ ドライバが協力して (そうあるべきです)、サイズ変更要求をそれ自体を実装する代わりにプリンタに渡すと、対応する印刷データの削減が得られます。

出力の品質が大幅に低下することに注意してください。スクリーンショットの解像度はレーザー プリンターの 6 分の 1 であるため、すべてのスクリーン ピクセルが紙の上で 6x6 の塊に変換されます。画像を縮小すると、これがさらに悪化します。

于 2013-10-09T15:07:56.353 に答える