2013-10-29 25 views
1

我正在处理PrintDocumentPrintPageEventHandler,以便使用Image.FromFile方法将图像 绘制到Graphics设备。如何实现与Windows默认打印相同的图像打印质量?

我试图设置DPI值高达600,并且还

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

如所建议的here但印刷的图像看起来仍然pixeled和粗糙相比打印具有例如相同的文件Windows照片查看器,它提供了一个很好的结果(在Windows 7上测试过)。

我注意到Paint.net使用WIA打印对话框 - 这是否意味着Imagequality是一个.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; 
    } 
+0

随机问题,你使用Windows 8?我发现从.net打印时,打印输出质量在Windows 8上显着降低,与早期版本相比,只是好奇你是否也使用Windows 8? – JMK

+0

另外,你的来源是什么? – Tico

+0

@JMK,OP表示“在Windows 7上测试过”。 – Steve

回答

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

简单如此: