2010-09-03 90 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