2009-04-14 13 views
3

C#2005 Windowsアプリケーションから複数のページTIFFファイルをプレビューして印刷しようとしています。印刷は正常に機能しますが、PrintPreviewDialogにPrintDocumentを送信すると、最初のページと2ページ目の画像ではなく、最初のページの2つの画像が表示されます。私はPrintPreviewControlを使うときも同じ問題があります。複数のページTIFFファイルを.Netでプレビューできません。

以下は、2つのボタン、PrintDocument、および問題を示すPrintPreviewDialogを持つフォームのコードです。 .NET FrameworkのPrintPreviewDialogに問題があった場合

public partial class Form1 : Form 
{ 
    private Image m_Image; 
    private Int32 m_CurrentPage; 
    private Int32 m_PageCount; 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     m_Image = Image.FromFile(".\\Test-2-Page-Image.tif"); 
     m_PageCount = m_Image.GetFrameCount(FrameDimension.Page); 
    } 

    private void printDocument_BeginPrint(object sender, PrintEventArgs e) 
    { 
     m_CurrentPage = 0; 
     m_PageCount = m_Image.GetFrameCount(FrameDimension.Page); 
    } 

    private void printDocument_PrintPage(object sender, PrintPageEventArgs e) 
    { 
     m_Image.SelectActiveFrame(FrameDimension.Page, m_CurrentPage); 
     e.Graphics.DrawImage(m_Image, 0, 0); 
     ++m_CurrentPage; 
     e.HasMorePages = (m_CurrentPage < m_PageCount); 
    } 

    private void btnPreview_Click(object sender, EventArgs e) 
    { 
     printPreviewDialog.Document = printDocument; 
     printPreviewDialog.ShowDialog(); 
    } 

    private void btnPrint_Click(object sender, EventArgs e) 
    { 
     printDocument.Print(); 
    } 
} 

は誰もが知っていますか私が何か間違ったことをしています。

答えて

3

これはGraphics.DrawImage()機能のバグです。

問題はここに文書化されています

img.SelectActiveFrame(FrameDimension.Page, curPage); 
using(MemoryStream stm = new MemoryStream()) 
{  
    img.Save(stm, imgCodecInfo, encParams); // save to memory stream 
    Bitmap bmp = (Bitmap)Image.FromStream(stm); 
    e.Graphics.DrawImage((Image)bmp,0,0); 
    bmp.Dispose(); 
} 
Graphics.DrawImage Bug

動作するコードは次のようになります

関連する問題