여러 페이지에 걸쳐 큰 이미지 (1200 너비 x 475 높이)를 인쇄하는 코드를 작성하려고합니다.C#을 사용하여 여러 페이지에 걸쳐 큰 이미지 인쇄
이미지를 3 개의 직사각형으로 나누고 (폭을 3으로 나눔) e.Graphics.DrawImage를 세 번 호출했는데 작동하지 않습니다.
한 페이지 내에 큰 이미지를 지정하면 작동하지만 이미지를 여러 페이지로 나누려면 어떻게해야합니까?
여러 페이지에 걸쳐 큰 이미지 (1200 너비 x 475 높이)를 인쇄하는 코드를 작성하려고합니다.C#을 사용하여 여러 페이지에 걸쳐 큰 이미지 인쇄
이미지를 3 개의 직사각형으로 나누고 (폭을 3으로 나눔) e.Graphics.DrawImage를 세 번 호출했는데 작동하지 않습니다.
한 페이지 내에 큰 이미지를 지정하면 작동하지만 이미지를 여러 페이지로 나누려면 어떻게해야합니까?
트릭은 이미지의 각 부분을 자체 페이지로 가져 오는 것이며 PrintPage
이벤트는 PrintDocument
입니다.
가장 쉬운 방법은 이미지를 페이지별로 하나씩 다른 이미지로 분할하는 것입니다. 나는 당신이 이미 그것을 다룰 수 있다고 가정 할 것이다. (이미지를 파티셔닝 해보면 똑같은 것을 별도의 이미지 위에 놓는다.) 그리고 우리가하는 PrintDocument 인스턴스를 만듭니다 PrintPage 이벤트를 연결하고, 이동 : 당신이 후 문서를 인쇄 할 경우, (예를 들어 문서를 다시 인쇄하기 전에 0으로 pageIndex을 다시 설정해야합니다
private List<Image> _pages = new List<Image>();
private int pageIndex = 0;
private void PrintImage()
{
Image source = new Bitmap(@"C:\path\file.jpg");
// split the image into 3 separate images
_pages.AddRange(SplitImage(source, 3));
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += PrintDocument_PrintPage;
PrintPreviewDialog previewDialog = new PrintPreviewDialog();
previewDialog.Document = printDocument;
pageIndex = 0;
previewDialog.ShowDialog();
// don't forget to detach the event handler when you are done
printDocument.PrintPage -= PrintDocument_PrintPage;
}
private void PrintDocument_PrintPage(object sender, PrintPageEventArgs e)
{
// Draw the image for the current page index
e.Graphics.DrawImageUnscaled(_pages[pageIndex],
e.PageBounds.X,
e.PageBounds.Y);
// increment page index
pageIndex++;
// indicate whether there are more pages or not
e.HasMorePages = (pageIndex < _pages.Count);
}
주 미리보기 표시).
당신의 솔루션도 나를 위해 일했습니다. PrintDocument_EndPrint 메서드 안에 있어야 할 때, PrintDocument_PrintPage 메서드 내에서 페이지 인덱스를 0으로 재설정했습니다. – coson
SplitImage (source, 3)가 어떻게 수행 될 수 있습니까? –