文本文档有更多的页面。他们需要处理打印更多页面的事件。但是我的代码是为**Copy From Screen()**方法编写的。
代码:
public partial class print : Form
{
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
e.Graphics.DrawImage(bmp, 0, 0);
}
private void printbtn_Click(object sender, EventArgs e)
{
printDocument1.DefaultPageSettings.PaperSize = new System.Drawing.Printing.PaperSize("210 X 297", 820, 800);
printPreviewDialog1.Document = printDocument1;
Graphics g = this.CreateGraphics();
bmp = new Bitmap(this.Size.Width, this.Size.Height, g);
Graphics g1 = Graphics.FromImage(bmp);
g1.CopyFromScreen(this.Location.X, this.Location.Y, 0, 0, this.Size);
printPreviewDialog1.ShowDialog();
}
}
1条答案
按热度按时间2mbi3lxu1#
您可以将页面拆分为多个页面,并跟踪已打印的内容以及是否还有要打印的页面。下面是一个简单的示例,它将在一页上打印一个任意的文本列表(每页10行)。它将一直打印10行页面,直到没有要打印的行为止。
代码在每次打印开始时将行索引重置为零。然后在当前页上打印最多10行,当且仅当还有行要打印时才打印另一页。这是一个简单的原理,您需要针对数据以适当的方式实现它。
另一个变体是使用
BeginPrint
事件来处理数据并将其拆分为页面,然后针对每个PrintPage
事件打印其中一个页面,例如