1

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

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

我的账单表格有两张图片和一张gridviewbox。此代码可以打印账单,但 .xps 文件的质量很差 - 甚至文本打印不清晰。

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

4

2 回答 2

4

是的,除非你的手臂真的很长,否则这看起来不太好。问题是打印机的像素分辨率比显示器高得多。一台体面的打印机具有 600 dpi(每英寸点数)的分辨率。默认情况下,显示器为 96 dpi,尽管在坚持了几十年后终于有所改善。

因此,要以您的方式打印表单,您有两个不愉快的选择。您可以打印表格,使屏幕上的一个像素相当于纸上的一个像素。这为您提供了原始形式的非常清晰的图像,但它大约是一张邮票的大小。或者您将表格打印在纸上和屏幕上一样大,您现在看到的情况。这会将显示器上的单个像素变成纸上的 6 x 6 斑点。结果看起来很粗糙,尤其是文本看起来很糟糕。

一个解决方案是在屏幕上绘制 6 倍大的表格并打印出来。但是那不起作用,您不能使表单大于屏幕。唯一真正的解决方案是在打印机上画 6 倍大。这需要 PrintDocument 类。还有一堆代码在它的 PrintPage 事件处理程序中进行绘图。您无法哄骗控件为您执行此操作,因此这是一项繁重的工作。

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

于 2012-09-22T21:20:24.357 回答
0

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

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));
    }
于 2015-07-10T21:30:21.320 回答