Печать "длинной" графики

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Печать "длинной" графики

Сообщение MIT » 20.02.2009 (Пт) 21:16

В последнее время моя голова категорически отказывается работать в сторону логики, более сложной, нежели "+" или XOR. Вот есть такая задача: надо распечатать длинную графику, но я не могу придумать как прикрутить собственно рисование этой графики к печати. Что мы имеем:
1) PrintDocument и его событие PrintPage (в котором имеется "выводная" графика)
2) Процедуру Draw, принимающую в качестве параметров графику, на которую надо рисовать, границы рисования и много чего еще
Во время работы Draw создает событие NextSheet(ByVal Graph As Graphics, ByRef H As Integer), в котором предлогается установить новую стартовую позицию по вертикали и поменять графику.

Проблема в чем: при переходе на новую страницу (функцией Draw) надо известить PrintDocument о том, что уже пора бы поменять лист и заменить графику и позицию рисования.

Какой сдесь можно придумать выход?
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Re: Печать "длинной" графики

Сообщение Emzari » 04.03.2009 (Ср) 13:06

в обработчике собития PrintPage есть аргумент типа PrintPageEventArgs допустим он называется ppea тогда иницировать печать следуюшчеи страницы можно так
Код: Выделить всё
ppea.HasMorePages = True

MIT
Мега гуру
Мега гуру
Аватара пользователя
 
Сообщения: 2211
Зарегистрирован: 17.09.2006 (Вс) 22:46

Re: Печать "длинной" графики

Сообщение MIT » 04.03.2009 (Ср) 14:48

Спасибо, но это я знаю. Вопрос в другом - процедура рисует длинную картинку (и самой функции глубоко наплевать на факт печати), и ее надо оповещать о приостановке рисования, подменивать обрабатываемую графику и обнулять счетчик положения.
Хотя проблему, я можно сказать, решил - сначала процедура рисует все в кеш (этим мы легко можем добиться приостановки в нужных местах), а потом, уже из кеша, выводится на печать.
Изображение
You can change your face, but can`t change your mind. No matter what you do.
Создайте еще более понятный интерфейс и мир создаст еще более тупого юзера. (с) Баш

Emzari
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 06.09.2002 (Пт) 9:08
Откуда: Georgia

Re: Печать "длинной" графики

Сообщение Emzari » 04.03.2009 (Ср) 17:13

у меня рисунки не откриваются и я не знаю чего конкретно ты питаешся напечатать но в обшем попробуи использовать внешнее переменное например PageNumber в котором будеш хранить номер текушеи страницы а всамом процедуре Draw проверяй его значение

примерно вот так

Код: Выделить всё
SelectCase PageNumber
     Case 1
          обработка первой страницы
     Case Else
          обработка остальных страниц
End select


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 89

    TopList