Как напечатать все изображения Flowlayoutpanel с помощью C # - PullRequest
0 голосов
/ 07 февраля 2011

Может ли кто-нибудь помочь мне распечатать все 10 изображений, находящихся в поточной панели, с использованием c # (Visual Studio .NET 2005 или 2008)

Понятия не имею, как это сделать?

1 Ответ

0 голосов
/ 07 февраля 2011

Если вы спрашиваете о WinForms FlowLayoutPanel и используете PictureBox-es для отображения изображений, то вы можете попробовать что-то вроде этого:

private int imagesToPrintCount;

private void PrintAllImages()
{
    imagesToPrintCount = flowLayoutPanel1.Controls.Count;
    PrintDocument doc = new PrintDocument();
    doc.PrintPage += Document_PrintPage;
    PrintDialog dialog = new PrintDialog();
    dialog.Document = doc;

    if (dialog.ShowDialog() == DialogResult.OK)
        doc.Print();      
}

private void Document_PrintPage(object sender, PrintPageEventArgs e)
{
    e.Graphics.DrawImage(GetNextImage(), e.MarginBounds);
    e.HasMorePages = imagesToPrintCount > 0;
}

private Image GetNextImage()
{
    PictureBox pictureBox = (PictureBox)flowLayoutPanel1.Controls[flowLayoutPanel1.Controls.Count - imagesToPrintCount];
    imagesToPrintCount--;
    return pictureBox.Image;
}

Имейте в виду, что вам может потребоваться проверить типы элементов управления в FlowLayoutPanel, проверьте количество изображений перед началом печати, масштабируйте изображения и прочее.

...