以高品质打印winform?

我是编写代码的新手,但我正在学习C#并正在为我的商店制作一个小账单制作程序。 我需要打印表格,这是我的账单。 通过在互联网上搜索,我找到了这段代码:

printForm1.Print(this, PrintForm.PrintOption.ClientAreaOnly); 

我的结算表单有两个图片和一个gridviewbox 。 此代码可以打印帐单,但.xps文件的质量很差 – 即使文本打印不清晰。

如何提高表格的打印质量?

是的,除非你有很长的武器,否则看起来并不好。 问题是打印机的像素分辨率比显示器高得多。 一台体面的打印机具有600 dpi(每英寸点数)的分辨率。 默认情况下,监视器是96 dpi,虽然这种情况在被困在数十年之后终于有所改善。

因此,要按照您的方式打印表单,您有两个不愉快的选择。 您可以打印表单,以便屏幕上的一个像素是纸上的一个像素。 这样可以为您提供原始形状的清晰图像,但它大约相当于邮票的大小。 或者您将表格打印在纸上,就像在屏幕上一样,您现在看到的是什么。 这会将显示器上的单个像素转换为纸上6 x 6的斑点。 结果看起来很粗糙,特别是文字看起来很糟糕。

一种解决方案是在屏幕上绘制6倍大的形状并打印出来。 然而,这不起作用,你不能使表格大于屏幕。 唯一真正的解决方案是为打印机绘制6倍大。 这需要PrintDocument类。 并在其PrintPage事件处理程序中执行一堆代码来进行绘制。 你不能哄骗控件为你做这些,所以这是一堆工作。

或使用报告生成器。 它们存在以解决这个问题。 谷歌“.net报告生成器”开始购物。

以下是向打印机渲染大图像的基本示例:

 Bitmap bitmapToPrint; public void printImage() { bitmapToPrint = new Bitmap(3400,4400); Font font = new Font(FontFamily.GenericSansSerif, 120, FontStyle.Regular); string alphabet = "abcdefghijklmnopqrstuvwxyz"; Graphics graphics = Graphics.FromImage(bitmapToPrint); graphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias; graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 0); graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 1000); graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 2000); graphics.DrawString(alphabet, font, System.Drawing.Brushes.Black, 0, 3000); PrintDocument pd = new PrintDocument(); pd.PrinterSettings.PrinterName = "Microsoft XPS Document Writer"; pd.PrinterSettings.PrintToFile = true; pd.PrintPage += new PrintPageEventHandler(pd_PrintPage); pd.Print(); } void pd_PrintPage(object sender, PrintPageEventArgs e) { e.Graphics.DrawImage(bitmapToPrint, new RectangleF(0.0f, 0.0f, 850.0f, 1100.0f)); }