我对编写代码很陌生,但我正在学习C#,并且正在为我的商店制作一个小小的帐单制作程序。我需要打印表格,这是我的账单。从互联网上搜索,我发现这段代码:以高品质打印winform?
printForm1.Print(this, PrintForm.PrintOption.ClientAreaOnly);
我的帐单的形式有两种图像和一个gridviewbox
。此代码可以打印帐单,但.xps文件的质量很差 - 即使文本不打印得很清晰。
如何提高表格的打印质量?
我对编写代码很陌生,但我正在学习C#,并且正在为我的商店制作一个小小的帐单制作程序。我需要打印表格,这是我的账单。从互联网上搜索,我发现这段代码:以高品质打印winform?
printForm1.Print(this, PrintForm.PrintOption.ClientAreaOnly);
我的帐单的形式有两种图像和一个gridviewbox
。此代码可以打印帐单,但.xps文件的质量很差 - 即使文本不打印得很清晰。
如何提高表格的打印质量?
是的,除非你有很长的手臂,否则看起来不好。问题在于打印机的像素分辨率要比监视器高得多。一个体面的打印机具有600 dpi(每英寸点数)分辨率。监视器默认情况下为96dpi,虽然这种情况在数十年后停滞不前。
因此,要按照您的方式打印表格,您有两个不愉快的选择。您可以打印表格,使屏幕上的一个像素成为纸上的一个像素。这给你一个原始形式非常清晰的图像,但它是关于邮票的大小。或者,您将纸张上的表格与屏幕上显示的一样大,您现在看到的情况。将显示器上的单个像素变成纸上的6 x 6斑点。结果看起来非常有颗粒感,特别是文字看起来很差。
一个解决方案是在屏幕上画出6倍大的表格并打印出来。然而,这是行不通的,你不能让表格比屏幕更大。唯一真正的解决方案是将6倍大的打印机打印出来。这需要PrintDocument类。并在其PrintPage事件处理程序中执行绘图的一堆代码。你无法哄骗控制手段来为你做,所以这是一大堆工作。
或使用报告生成器。他们存在解决这个问题。谷歌“.net报告生成器”开始购物。
感谢您的帮助。 – Eplzong
以下是一个大的图像渲染到打印机的基本样本:
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));
}
搜索有关PRINTSCREEN,并用它和表单的位置/大小,以创建形式的高质量图像,然后在打印机发送。所有步骤都将通过代码完成。 – Hamid
[此链接](http://www.c-sharpcorner.com/UploadFile/srajlaxmi/PrintingWindowsForm01182008021239AM/PrintingWindowsForm.aspx)可能有所帮助;除了您发布的一行外,我不确定您尝试过的所有内容。 –