这是我的打印代码。单击打印并出现对话框。如果您单击“确定”,则会启动捕获屏幕。位图 memoryImage 成为当前窗体正在显示的位图。我验证它是正确的并且图像被成功捕获。
最后 printDocument.Print() 发生。只打印一个空白页。我尝试将其更改为 e.Graphics.Color(Gray); 仍然没有运气只打印一个空白页。
显然与打印机的通信很好。我的猜测是页面实际上是在附加图像之前打印的,但我之前从未编写过打印代码,所以我不确定如何重新排列我的代码。
使用 System.Drawing.Printing;
//显示打印对话框(效果很好)
private void button2_Click(object sender, EventArgs e)
{
PrintDialog printDialog1 = new PrintDialog();
printDialog1.Document = printDocument1;
DialogResult result = printDialog1.ShowDialog();
if (result == DialogResult.OK)
{
CaptureScreen();
printDocument1.Print();
//this.Close();
}
}
Bitmap memoryImage;
//捕获屏幕(也可以)
private void CaptureScreen()
{
Graphics myGraphics = this.CreateGraphics();
Size s = this.Size;
memoryImage = new Bitmap(s.Width, s.Height, myGraphics);
Graphics memoryGraphics = Graphics.FromImage(memoryImage);
memoryGraphics.CopyFromScreen(
this.Location.X, this.Location.Y, 0, 0, s);
}
//从捕获的屏幕中绘制图像(不起作用)
private void printDocument1_PrintPage(System.Object sender,
System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(memoryImage, 0, 0);
}