如何在循环中打印许多图形对象?

时间:2016-07-25 14:56:42

标签: c# visual-studio-2008

我必须打印很多条形码。如果我使用此代码块打印单个条形码,如何在循环中执行此操作:

    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 是存储每个条形码对象(标题,条纹和数字)三个部分位置的变量,它们应该在循环中改变自己。

1 个答案:

答案 0 :(得分:2)

如果你想在一个页面上打印多个条形码,没有什么能阻止你把它们放在一个循环中。我会将代码移动到一个单独的方法,而不是“内联委托”,以保持其清洁:

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类具有HasMorePages属性。只要您将此属性设置为true,就会调用事件方法,允许您为每个页面打印不同的条形码。