Как вывести PictureBox на печать?

Есть такой pictureBox: введите сюда описание изображения

Его надо вывести на печать. Пробую так

 private void printButton_Click(object sender, EventArgs e)
    {
        using (PrintDialog dialog = new PrintDialog()) {
            using (PrintDocument document = new PrintDocument())
            {
                document.PrintPage += Doc_PrintPage;
                dialog.Document = document;
                if (dialog.ShowDialog() == DialogResult.OK) document.Print();
            }
        }

    }

    private void Doc_PrintPage(object sender, PrintPageEventArgs e)
    {
        Bitmap bitmap = new Bitmap(graphicsPB.Width, graphicsPB.Height);
        graphicsPB.DrawToBitmap(bitmap, new Rectangle(0, 0, graphicsPB.Width, graphicsPB.Height));
        e.Graphics.DrawImage(bitmap, 0, 0);
        bitmap.Dispose();
    }

Но выводится просто серый экран.

введите сюда описание изображения

Рисую на PictureBox через Graphics g = PictureBox.CreateGraphics(); в методе по нажатию на кнопку "рисовать"

Выяснилось, что после нажатия на кнопку печати, печати в файл и сворачивания и разворачивания окна, все что нарисовано на PictureBox пропадает. Почему так происходит?


Ответы (1 шт):

Автор решения: MSDN.WhiteKnight

Ваш код печати работает, если PictureBox использовать по назначению - установить у него свойство ImageLocation для отображения картинки. Если вы рисуете на него своим собственным кодом, DrawToBitmap не работает, да и он не нужен: это лишнее растровое преобразование и возможная потеря качества. Просто рисуйте на объекте Graphics из PrintPageEventArgs то же самое, что вы рисуете на PictureBox, результат будет идентичен.

→ Ссылка