如何实现与窗口默认打印相同的图像打印质量

本文关键字:打印 打印质量 图像 默认 窗口 何实现 实现 | 更新日期: 2023-09-27 18:37:21

我正在处理PrintDocumentPrintPageEventHandler以绘制图像使用Image.FromFile方法到Graphics设备。

我尝试将 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;
    }

如何实现与窗口默认打印相同的图像打印质量

好吧,

这很尴尬:

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;
}

就这么简单:|