如何循环打印多个图形objects?
How to print many graphical objects in a loop?
我要打印很多条码。如果我使用此代码块打印单个条形码,我该如何循环执行此操作:
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1) {
e1.Graphics.DrawString("TITLE", new Font("Univers 55", 6), new SolidBrush(Color.Black), new RectangleF(titleX, titleY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(s, new Font("Barcode", 24), new SolidBrush(Color.Black), new RectangleF(codeX, codeY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(test, new Font("Univers 55", 8), new SolidBrush(Color.Black), new RectangleF(numberX, numberY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
};
titleX, titleY, codeX, codeY, numberX, numberY 是存储每个条码object三部分位置的变量(标题,条纹和数字), 他们应该循环改变自己。
如果您想在一个页面上打印多个条形码,没有什么可以阻止您将它们放在一个循环中。不过,我会将代码移到一个单独的方法中,而不是 "inline delegate",以保持它的整洁:
p.PrintPage += PrintPage;
...
private void PrintPage(object sender, PrintPageEventArgs e)
{
for (int i = 0; i < numberOfBarcodes; i++)
{
int titleY = i * titleYdistance + titleYoffset;
// etc.
e.Graphics.DrawString(...);
// etc.
}
}
如果您的内容超过一个页面所能容纳的内容,PrintPageEventArgs
class 有一个 HasMorePages
属性。只要你一直把这个属性设置为true
,事件方法就会被调用,允许你为每一页打印不同的条码。
我要打印很多条码。如果我使用此代码块打印单个条形码,我该如何循环执行此操作:
p.PrintPage += delegate(object sender1, PrintPageEventArgs e1) {
e1.Graphics.DrawString("TITLE", new Font("Univers 55", 6), new SolidBrush(Color.Black), new RectangleF(titleX, titleY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(s, new Font("Barcode", 24), new SolidBrush(Color.Black), new RectangleF(codeX, codeY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
e1.Graphics.DrawString(test, new Font("Univers 55", 8), new SolidBrush(Color.Black), new RectangleF(numberX, numberY, p.DefaultPageSettings.PrintableArea.Width, p.DefaultPageSettings.PrintableArea.Height));
};
titleX, titleY, codeX, codeY, numberX, numberY 是存储每个条码object三部分位置的变量(标题,条纹和数字), 他们应该循环改变自己。
如果您想在一个页面上打印多个条形码,没有什么可以阻止您将它们放在一个循环中。不过,我会将代码移到一个单独的方法中,而不是 "inline delegate",以保持它的整洁:
p.PrintPage += PrintPage;
...
private void PrintPage(object sender, PrintPageEventArgs e)
{
for (int i = 0; i < numberOfBarcodes; i++)
{
int titleY = i * titleYdistance + titleYoffset;
// etc.
e.Graphics.DrawString(...);
// etc.
}
}
如果您的内容超过一个页面所能容纳的内容,PrintPageEventArgs
class 有一个 HasMorePages
属性。只要你一直把这个属性设置为true
,事件方法就会被调用,允许你为每一页打印不同的条码。