2012-05-25 53 views
3

在我的應用程序中,我有一個包圍在面板內的圖表。我從工具箱中添加了一個printdocument組件,當我想打印圖表時,我正在創建一個位圖,並且我在位圖內獲取了面板(並且因此導致了面板內的圖表)。我的問題是,當我創建位圖時,當我將它發送到打印機來打印它時,它從底部和右側吃掉了一些圖表。下面是我的代碼來執行此當我打印位圖時,它會吃掉一些圖片

private void button1_Click(object sender, EventArgs e) 
    { 
     PrintDialog printDialog = new PrintDialog(); 
     printDialog.Document = printDocument1; 
     printDialog.UseEXDialog = true; 
     //Get the document 

     if (DialogResult.OK == printDialog.ShowDialog()) 
     { 
      printDocument1.DocumentName = "Test Page Print"; 
      printPreviewDialog1.Document = printDocument1; 

      if (DialogResult.OK == printPreviewDialog1.ShowDialog()) 
      printDocument1.Print(); 
     } 
    } 

這是用於初始化print_document的按鈕。 (我加了打印預覽,這樣我就不必每次都打印出來,花了紙張和油墨)

private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e) 
    { 
     Bitmap bm = new Bitmap(this.panel1.Width, this.panel1.Height); 
     this.panel1.DrawToBitmap(bm, new Rectangle(50, 50, this.panel1.Width + 50, this.panel1.Height + 50)); 
     e.Graphics.DrawImage(bm, 0, 0); 
    } 

我在想,也許圖表太大,它不適合頁面但如果我保存位圖。它在頁面內部合適,實際上在底部和右側有太多可用空間。 (抽獎位圖功能添加

bm.Save(@"c:\LOAN_GRAPH.png"); 

,而不是平局圖像後,圖像的保存在C :)

任何人誰可以幫助我,我將是真正的感恩。

+0

因此,如果生成的位圖在將其保存到磁盤時看起來不錯,是否嘗試過將該圖像發送到打印機?對我來說,這聽起來更像是調整圖像以適應某些東西的打印過程,以及裁剪圖像的其餘部分。 – cDecker32

+0

如果你嘗試這種超載,該怎麼辦? e.Graphics.DrawImage(bm,new Rectangle(Point.Empty,bm.Size),new Rectangle(Point.Empty,bm.Size),GraphicsUnit.Pixel); –

+0

它的工作。 我刪除了面板,而是根據我的圖表創建矩形。 位圖bm =新的位圖(this.chart1.Width,this.chart1.Height); this.chart1.DrawToBitmap(bm,new Rectangle(50,50,this.chart1.Width + 50,this.chart1.Height + 50)); e.Graphics.DrawImage(bm,0,0); 和它的工作就像一個魅力 –

回答

1

它的工作。 我刪除了面板,而是根據我的圖表創建矩形。

Bitmap bm = new Bitmap(this.chart1.Width, this.chart1.Height); 
    this.chart1.DrawToBitmap(bm, new Rectangle(50, 50, this.chart1.Width + 50, this.chart1.Height + 50)); 
    e.Graphics.DrawImage(bm, 0, 0);