【发布时间】:2016-03-29 20:47:36
【问题描述】:
我有一个可以在我的机器上正确打印的表单,但是当我在另一台机器上部署应用程序时,该表单不适合页面并且桌面背景出现在打印的文档上。两台机器的主要区别在于一台机器的 DPI 设置为 150%。我已经多次更改自动缩放,但没有任何变化。表格在屏幕上看起来不错,但打印不正确。下面是我正在使用的代码。
private void btnPrint_Click(object sender, EventArgs e)
{
CaptureScreen();
printPreviewDialog1.Document = printDocument1;
printPreviewDialog1.ShowDialog();
}
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);
}
【问题讨论】:
-
您为什么要打印网络表单?你确定区别不在于两台机器的打印设置?
-
用户需要填写、保存和打印Windows表单。当 DPI 为 100% 或 125% 但不是 150% 时,表格打印正确。我的一位用户有视力问题,因此他使用最高 DPI 设置。
-
您有一张失败打印输出的照片吗?
-
我会试着弄一个。描述它的最佳方式是,如果您从左上角开始,然后向右和向下移动大约 50% 的表单大小,放大然后裁剪表单,这就是您所得到的。