2010-09-03 94 views
1

我試圖在C#中使用PrintDocument打印圖像,但在打印和預覽時忽略設置(如頁數和圖像質量)。PrinterSetting在打印圖像時被忽略

下面的代碼有什麼不對嗎,我錯過了什麼嗎?

private void button1_Click(object sender, EventArgs e) 
{ 
    using (var printDialog = new PrintDialog()) 
    { 
     if (printDialog.ShowDialog() == DialogResult.OK) 
     { 
      _printDocument.PrinterSettings = printDialog.PrinterSettings;  
     } 
    } 
} 

void _printDocument_Print(object sender, PrintPageEventArgs e) 
{ 
    using (Image image = new Bitmap("image0002.tif")) 
    { 
     e.Graphics.DrawImage(image, e.MarginBounds.X, e.MarginBounds.Y); 
    } 
} 

回答

1

您是否嘗試過PrintDialogDocument屬性設置爲要打印的文檔?如果我沒有記錯,該對話框應自動管理當前的設置PrintDocument,因此不需要手動分配PrinterSettings

此外,我認爲PrintDialog.ShowDialog()一個DialogResult.OK意味着你要打印的文檔(用戶點擊「打印」按鈕)。

例如:

using (var printDialog = new PrintDialog { Document = _printDocument }) 
{ 
    if (printDialog.ShowDialog() == DialogResult.OK) 
    { 
     _printDocument.Print();  
    } 
} 

這是否幫助?


編輯:如果你不想馬上打印,你可以嘗試:

using (var printDialog = new PrintDialog { Document = _printDocument }) 
{ 
    printDialog.ShowDialog();  
} 

,但用戶可能會覺得有點陌生,如果他們點擊「打印」和文檔不打印。

+0

這確實有助於理解PrintDialog的工作方式,但是有什麼方法可以將'PrinterSettings'設置爲使用'PrintDialog'進行文檔打印,並在稍後使用另一個按鈕進行打印? – 2010-09-03 08:37:08

+0

@Prashant - 我想你可以只顯示'PrintDialog'並忽略結果,讓它與文檔的設置交互,看它是否合適。我在猜測,如果用戶點擊「取消」,這些更改將被丟棄,其他任何內容都應該被應用,但是我已經使用過這些東西已經有一段時間了。看我的編輯。 – 2010-09-03 08:54:14