代码之家  ›  专栏  ›  技术社区  ›  Jon

打印Windows窗体

  •  0
  • Jon  · 技术社区  · 15 年前

    有人知道提高最终质量的方法吗?

    System.Drawing.Printing.PrintDocument Doc = new System.Drawing.Printing.PrintDocument();
                Doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.Doc_PrintPage123);
                Doc.DefaultPageSettings.Landscape = true;
                Doc.DefaultPageSettings.PrinterSettings.DefaultPageSettings.Landscape = true;
                Doc.DefaultPageSettings.PrinterSettings.Copies = 2;
                Doc.PrinterSettings.Copies = 2;
                Doc.Print();
    
     private void Doc_PrintPage123(object sender, System.Drawing.Printing.PrintPageEventArgs e)
            {
                 Bitmap bitmap = new Bitmap(AForm.Width, AForm.Height);
                AForm.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
                e.Graphics.DrawImage(bitmap, 0, 0);
            }
    
    3 回复  |  直到 15 年前
        1
  •  3
  •   Hans Passant    15 年前

    这很正常。打印机的分辨率比显示器高6倍。使用默认映射(1像素=0.01英寸),您将在打印机上获得与屏幕上大小大致相同的位图。屏幕上的1个像素变成打印机上6 x 6像素的斑点。是的,看起来不太好。

    如果你把它画小6倍,你会得到一个清晰的图像。比邮票大一点。不要打印表单。通过在e.Graphics上绘图来利用打印机的分辨率。当然,很多工作,像水晶报表这样的报表生成器很受欢迎。

        2
  •  1
  •   Rune Grimstad    15 年前

    窗体将以其显示的分辨率呈现为位图。模糊和像素化是由于图像分辨率低,打印时需要调整大小。

    没有好办法提高质量。你可以尝试调整图像的大小,并像Mamta Dalal建议的那样应用某种平滑模式,但这只会对像素化有所帮助。

    如果您真的需要更高的质量,您必须使用另一种机制来打印您的数据。使用某种报表设计器可能是最简单的方法。

        3
  •  0
  •   Mamta D    15 年前

    试试这个: e。图形.平滑模式= 平滑模式。高质量;

    推荐文章