2013-10-29 30 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; 
} 

簡單如此: