Печать формы Windows - PullRequest
       3

Печать формы Windows

0 голосов
/ 16 сентября 2010

Я унаследовал некоторый код для печати содержимого формы, однако изображение, полученное на бумаге, кажется, имеет некоторую тень / размытость, как будто оно пыталось сделать сглаживание, но не очень хорошо, и буквы пикселированыпо краям.

Кто-нибудь знает способ улучшения конечного качества?

System.Drawing.Printing.PrintDocument Doc = new System.Drawing.Printing.PrintDocument();
            Doc.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(this.Doc_PrintPage123);
            Doc.DefaultPageSettings.Landscape = true;
            Doc.DefaultPageSettings.PrinterSettings.DefaultPageSettings.Landscape = true;
            Doc.DefaultPageSettings.PrinterSettings.Copies = 2;
            Doc.PrinterSettings.Copies = 2;
            Doc.Print();

 private void Doc_PrintPage123(object sender, System.Drawing.Printing.PrintPageEventArgs e)
        {
             Bitmap bitmap = new Bitmap(AForm.Width, AForm.Height);
            AForm.DrawToBitmap(bitmap, new Rectangle(0, 0, bitmap.Width, bitmap.Height));
            e.Graphics.DrawImage(bitmap, 0, 0);
        }

Ответы [ 3 ]

3 голосов
/ 16 сентября 2010

Это нормально. У принтера разрешение в 6 раз лучше, чем у монитора. При отображении по умолчанию (1 пиксель = 0,01 дюйма) вы получите растровое изображение на принтере примерно того же размера, что и на экране. С 1 пикселем на экране становится капля размером 6 х 6 пикселей на принтере. Да, выглядит не очень.

Вы получите четкое изображение, если нарисуете его в 6 раз меньше. Немного больше, чем почтовая марка. Не печатайте формы. Воспользуйтесь разрешением принтера, опираясь на e.Graphics. Конечно, очень популярны генераторы отчетов, такие как Crystal Reports.

1 голос
/ 16 сентября 2010

Форма отображается как растровое изображение с разрешением, которое она отображается.Размытие и пикселизация связаны с низким разрешением изображения и изменением его размера при печати.

Нет хорошего способа улучшить качество.Вы можете попытаться изменить размер изображения и применить какой-то режим сглаживания, как предлагает Мамта Далал, но это только поможет при пикселизации.

Если вам действительно нужно более высокое качество, вы должны использовать другой механизм для печати ваших данных.Использование какого-либо дизайнера отчетов, вероятно, самый простой способ.

0 голосов
/ 16 сентября 2010

Попробуйте это: e.Graphics.SmoothingMode = SmoothingMode.HighQuality;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...