2012-05-25 2 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, новый Rectangle (Point.Empty, bm.Size), новый Rectangle (Point.Empty, bm.Size), GraphicsUnit.Pixel); –

+0

Его работы. Я удалил панель, и вместо этого я создаю прямоугольник в соответствии с моей диаграммой. Растровое изображение bm = новое растровое изображение (this.chart1.Width, this.chart1.Height); this.chart1.DrawToBitmap (bm, новый прямоугольник (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); 
Смежные вопросы