【问题标题】:How to achieve the same image printing quality as windows default printing?如何实现与windows默认打印一样的图像打印质量?
【发布时间】:2013-10-29 11:53:50
【问题描述】:

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

我尝试将 dpi 值设置为最高 600 并且也

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

正如here 建议的那样,但与使用例如打印相同的文件相比,打印的图像看起来仍然像素化且粗糙。 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;
    }

【问题讨论】:

  • 随机问题,您使用的是 Windows 8 吗?我发现与早期版本相比,像这样从 .net 打印时,Windows 8 上的打印输出质量显着下降,只是好奇您是否也在使用 Windows 8?
  • 另外,你的来源是什么?
  • @JMK,OP 声明“在 Windows 7 上测试”。
  • @Steve,这是在我提出问题后添加的,但是谢谢,直到现在才看到

标签: c# .net image printing


【解决方案1】:

好吧,这很尴尬:

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

就这么简单:|

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-07
    • 2016-10-23
    相关资源
    最近更新 更多