2011-02-07 3 views
0

사람은 제가 수행하는 방법에 어떤 생각이없는 C#을 (비주얼 스튜디오 .NET 2005 또는 2008)C#을 사용 flowlayoutpanel의 모든 이미지를 인쇄하는 방법을

를 사용하여 flowlayoutpanel에있는 모든 10 개 개의 이미지를 인쇄하는 데 도움이 수 이? ,

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에서 제어 유형을 확인해야 할 수도 있습니다 유의 사항 :

답변

0

는 윈폼 FlowLayoutPanel에 대해 물어 당신이 이미지를 표시하는 PictureBox를-ES를 사용하는 경우, 당신은 이런 식으로 뭔가를 시도 할 수 있습니다 인쇄를 시작하기 전에 이미지 개수를 확인하고 이미지와 다른 것들을 스케일합니다.

+0

인쇄 미리보기에 문제가 있습니다. flowlayout 컨트롤에서 모든 이미지의 인쇄 미리보기를 보여 주실 수 있습니까? – james

+0

PrintPreviewDialog 구성 요소를 만들고 PrintDocument를 미리보기 대화 상자의 Document 속성에 할당합니다. 대신 PrintDialog를 사용할 수 있습니다. 그러나 미리보기 대화 상자에서 인쇄하려면 imagesToPrintCount를 재설정해야합니다. 내가 기억할 때, 당신은 문서의 BeginPrint 이벤트를 사용할 수 있습니다. –