我是编写代码的新手,但正在学习 C# 并正在为我的商店制作一个小账单制作程序。我需要打印表格,这是我的账单。通过在互联网上搜索,我找到了这段代码:
printForm1.Print(this, PrintForm.PrintOption.ClientAreaOnly);
我的账单表格有两张图片和一张gridviewbox
。此代码可以打印账单,但 .xps 文件的质量很差 - 甚至文本打印不清晰。
如何提高表格的打印质量?
我是编写代码的新手,但正在学习 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));
}