Когда я печатаю растровое изображение, оно съедает часть
В моем приложении у меня есть диаграмма, которая находится внутри панели. Я добавил компонент 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:)
Любой, кто может мне помочь, буду очень благодарен.
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);