Экспорт панели управления .Net в изображение - PullRequest
2 голосов
/ 26 февраля 2010

Я занимаюсь разработкой приложения в VB.Net (VS2008), которое позволяет создавать макеты для аудиторий. Компоновка является панелью и имеет дочерние панели (объекты сидений), затем места заполняются с помощью перетаскивания и показывают предварительный просмотр сидящего там человека.

Я бы хотел экспортировать эту панель в формат для печати, такой как JPEG, PDF и т. Д.

Я пытался использовать CopyFromScreen, но не могу получить это только для вывода панели макета. (некоторые части панели могут отсутствовать на экране во время экспорта)

Я также рассмотрел использование HTML для вывода каждого места в качестве абсолютно позиционированного контейнера div. Затем распечатывает HTML-страницу.

Что люди считают лучшим решением? И не могли бы вы привести примеры, подтверждающие ваш выбор?

Ответы [ 2 ]

3 голосов
/ 26 февраля 2010

Вы можете использовать это ( msdn ), чтобы нарисовать элемент управления в растровое изображение:

dim bmp as new Bitmap(panel.Width, panel.Height)
panel.DrawToBitmap(bmp, panel.clientRectangle)

Затем можно сохранить растровое изображение в любом формате, который вы выберете.

0 голосов
/ 26 февраля 2010

Вы говорили о том, чтобы поместить содержимое панели в изображение.
Если вы используете WPF, вы можете сделать предварительный просмотр. Был вопрос, относящийся к этому здесь, в StackOverflow, всего день назад. Это довольно механически - любой «визуал» может быть передан в файл XPS, а затем отображен в DocumentViewer. Элемент управления DocumentViewer имеет встроенную кнопку печати, которая печатает то, что отображается. Если вы используете WinForms, этот подход не будет работать.

Другой подход - просто генерировать изображение напрямую и динамически.
Существует целый ряд статей, в которых говорится о динамическом создании изображений в ASPNET. Вот один из них. Я понимаю, что вы не используете ASPNET, но код .NET в основном такой же. Вам придется изменить этот код и создать макет в классе, рисуя объект Graphics. Затем отобразите это на панели или распечатайте.

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