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 :)
任何人誰可以幫助我,我將是真正的感恩。
因此,如果生成的位圖在將其保存到磁盤時看起來不錯,是否嘗試過將該圖像發送到打印機?對我來說,這聽起來更像是調整圖像以適應某些東西的打印過程,以及裁剪圖像的其餘部分。 – cDecker32
如果你嘗試這種超載,該怎麼辦? e.Graphics.DrawImage(bm,new Rectangle(Point.Empty,bm.Size),new Rectangle(Point.Empty,bm.Size),GraphicsUnit.Pixel); –
它的工作。 我刪除了面板,而是根據我的圖表創建矩形。 位圖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); 和它的工作就像一個魅力 –