Когда я печатаю растровое изображение, оно съедает часть

В моем приложении у меня есть диаграмма, которая находится внутри панели. Я добавил компонент 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);
Другие вопросы по тегам