1

メソッドを使用してデバイスに画像を描画するために、 を処理していPrintPageEventHandlerます。PrintDocumentGraphicsImage.FromFile

dpi値を最大600に設定しようとしましたが、

graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode  = SmoothingMode.HighQuality;
graphics.CompositingQuality = CompositingQuality.HighQuality;
graphics.PixelOffsetMode = PixelOffsetMode.HighQuality

ここで提案されているように、印刷された画像は、Windows フォト ビューアーなどで同じファイルを印刷する場合と比較して、まだピクセル化されて粗く見えます。これにより、優れた結果が得られます (Windows 7 でテスト)。

Paint.net が WIA 印刷ダイアログを使用していることに気付きました。これは、画質が .NET の制限であることを意味しますか、それとも単に間違っているのでしょうか?

完全な方法は次のとおりです。

private void pd_PrintPage(object sender, PrintPageEventArgs ev)
    {
        // Draw a picture.
        ev.Graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        ev.Graphics.SmoothingMode = SmoothingMode.HighQuality;
        ev.Graphics.CompositingQuality = CompositingQuality.HighQuality;
        ev.Graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; 

        ev.Graphics.DrawImage(Image.FromFile(Global.APPDATA_PATH+ @"tmp\print.png"), ev.Graphics.VisibleClipBounds);

        // Indicate that this is the last page to print.
        ev.HasMorePages = false;
    }
4

1 に答える 1

0

これは恥ずかしいです:

win7 と同じような最高の品質は、オプションをまったく定義しないことです!

コードは XP で開発されたため、内部でいくつかの変更があったに違いないため、win7 では異なる方法で処理されます。

private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{
    // Draw a picture.
    ev.Graphics.DrawImage(Image.FromFile(Global.APPDATA_PATH+ @"tmp\print.png"), ev.Graphics.VisibleClipBounds);

    // Indicate that this is the last page to print.
    ev.HasMorePages = false;
}

そのように簡単です:|

于 2014-01-17T10:58:48.190 に答える