Как напечатать определенные области формы? - PullRequest
3 голосов
/ 19 июня 2011

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

Теперь я хотел бы напечатать данные простым способом.Моя идея состоит в том, чтобы печатать только групповые поля и регулировать выравнивание, чтобы напечатанная страница выглядела немного лучше.

Какие подходы можно рекомендовать для WinForms или есть лучшие практики?Существуют ли предопределенные вспомогательные классы?

Ответы [ 2 ]

5 голосов
/ 19 июня 2011

Вы можете использовать метод Control.DrawToBitmap() для создания изображения для элемента управления, которое вы можете нарисовать на бумаге в обработчике событий PrintDocument.PrintPage с помощью e.Graphics.DrawImage().

Это далеко не «лучшая практика». У принтеров разрешение намного выше, чем у мониторов. Как правило, 600 точек на дюйм по сравнению с 96. Чтобы избежать превращения элементов управления в почтовые марки, необходимо масштабировать растровые изображения в 6 раз. Класс PrintDocument делает это по умолчанию. Результат зернистый, особенно текст выглядит плохо при просмотре на типичной длине руки. Вы получите только хорошо выглядящий текст с Graphics.DrawString(). Другими словами, пишите код, а не копируйте растровые изображения. Существует множество генераторов отчетов, которые помогут вам избежать утомительного написания кода.

0 голосов
/ 23 июня 2011

Более простой способ - использовать компонент PrintForm PowerPack для Visual Basic. Просто найдите в панели инструментов в VS компонент PrintForm и перетащите его на поверхность вашей формы. Вот и все.

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