WPF程序PrintDocument类,打印完成,图片出来之后弹框
时间: 2024-02-28 17:52:15 浏览: 26
好的,您可以使用以下代码在使用PrintDocument类打印完成后弹出一个包含打印结果的弹框:
```
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
// 创建PrintDocument对象
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
// 设置打印队列
printDoc.PrintQueue = printDialog.PrintQueue;
// 执行打印操作
printDoc.Print();
// 打印完成后显示弹框
MessageBox.Show("打印完成!");
}
}
private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
// 在PrintPage事件中绘制要打印的内容
// 这里以绘制一个图片为例
Image image = new Image();
image.Source = new BitmapImage(new Uri("image.png", UriKind.Relative));
e.Graphics.DrawImage(image.Source, new Point(0, 0));
}
```
在上面的代码中,`printDoc_PrintPage`方法中绘制要打印的内容,在`PrintButton_Click`方法中创建PrintDocument对象并设置打印队列。在执行打印操作后,`MessageBox.Show`方法会弹出一个包含“打印完成!”文本的弹框。
如果您想要在弹框中显示打印结果,您可以使用`PrintQueue`对象的`GetPrintJobInfoCollection`方法获取打印作业的信息,例如下面的代码:
```
private void PrintButton_Click(object sender, RoutedEventArgs e)
{
PrintDialog printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
// 创建PrintDocument对象
PrintDocument printDoc = new PrintDocument();
printDoc.PrintPage += new PrintPageEventHandler(printDoc_PrintPage);
// 设置打印队列
printDoc.PrintQueue = printDialog.PrintQueue;
// 执行打印操作
printDoc.Print();
// 获取打印作业信息
PrintQueue printQueue = printDialog.PrintQueue;
PrintJobInfoCollection printJobs = printQueue.GetPrintJobInfoCollection();
PrintJobInfo printJob = printJobs.Last();
// 显示打印结果
string message = string.Format("打印作业 {0} 已完成,页数 {1},打印机 {2}。",
printJob.JobName, printJob.NumberOfPages, printQueue.FullName);
MessageBox.Show(message);
}
}
private void printDoc_PrintPage(object sender, PrintPageEventArgs e)
{
// 在PrintPage事件中绘制要打印的内容
// 这里以绘制一个图片为例
Image image = new Image();
image.Source = new BitmapImage(new Uri("image.png", UriKind.Relative));
e.Graphics.DrawImage(image.Source, new Point(0, 0));
}
```
在上面的代码中,`printQueue.FullName`表示打印机名称,`printJob.JobName`表示打印作业名称,`printJob.NumberOfPages`表示打印页数。您可以根据需要修改提示信息。