Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Языки программирования -> Ватсон К. -> "С#" -> 190

С# - Ватсон К.

Ватсон К. С# — Лори, 2005 . — 879 c.
ISBN 1-861004-98-2
Скачать (прямая ссылка): vatsonc2005.pdf
Предыдущая << 1 .. 184 185 186 187 188 189 < 190 > 191 192 193 194 195 196 .. 404 >> Следующая


Вывод на печать

Когда дело доходит до печати, приходится думать о выборе принтера, установках вывода страницы и о том, как напечатать несколько страниц. Использование классов .NET, находящихся в пространстве имен system.Drawing. Painting, позволяет существенно облегчить нашу задачу.

Перед тем как перейти к рассмотрению класса PrintDialog, который позволяет . выбирать принтер, необходимо кратко ознакомиться с тем, каким образом .NET

управляет процессом вывода на печать. В основе вывода на печать лежит использование класса printDocument, обладающего методом Print о, который осуществляет целую последовательность вызовов, завершающуюся обращением к методу OnFrintFageO — методу, ответственному за передачу выходного потока принтеру.
406

Глава 15

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

Архитектура вывода на печать

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

p»a»s»tUpDi»iofl

+ShowDSalogO

+Re»tO

L?

PagaSattlnpc

¦PaperS lie

+PaperSourca

¦Marpln»

PrlntDlklog

¦ShowOielogO

¦ResetO

PrintPageEv«ntArg»

+HaaMoraP«gos ¦PagaBounds +Marg)nBounds

> Print* rSattlngi
¦ InatafledPrinters



Prin (Document

¦PrintO

SOnBeginPrintO

#OnErvdPrtntO

EOnPrintPaaeO

Graphics

¦DrawS trtngO

+DrawLina()

¦PrawPathQ

PrlntControllar

OnSlarlPrintO

OnSlarlPageO

OnEndPageO

OrtEndPrinlO

PrintQ

PrintLoop()

Вот функциональные возможности этих классов:

? Наиболее важный класс — printDialog. На приведенной диаграмме видно, что почти все классы связаны с ннм. Для того чтобы вывести на печать какой-либо документ, необходим экземпляр класса printDocument. На следующей диаграмме мы увидим последовательность действий

при выводе на печать, инициируемую данным классом.

? Класс printcontroller осуществляет управление потоком задания вывода на печать. Контроллер вывода на печать запускает задачу вывода на печать, он обладает событиями для начала вывода на печать, для каждой страницы и для завершения вывода на печать.

Это абстрактный класс, поскольку его реализации отличаются от реализации обычного вывода на печать и предварительного просмотра печатаемой информации.

? С помощью класса Printersettings имеется возможность определять и задавать значения свойств, определяющих конфигурацию принтера, например дуплексная печать, горизонтальное или вертикальное расположение листа, число копий и т. д.

? В задачу класса PrintDialog входит определение принтера,

на который должна отправляться выводимая иа печать информация,
Использование диалоговых окон

407

и каким образом должны быть сконфигурированы установки в PrinterSectinfls. Этот класс является производным от класса commonDiaiog — как и все остальные классы диалогов, с которыми мы уже успели познакомиться, поэтому у вас уже есть самое первое представление о том, каким образом он будет использоваться.

? Класс PrinterSettinfls определяет размеры и границы выводимых на печать страниц, а также то, какая требуется печать — цветная или черно-белая. Конфигурация этого класса может быть задана с помощью класса PageSetupDialog, который также является производным ОТ CommonDialotf.

Последовательность действий при выводе на печать

Теперь нужно рассмотреть основную последовательность действий при выводе на печать. На приведенной ниже диаграмме изображены основные элементы — приложение, которое нам предстоит создать, экземпляр класса printDocrnnens: и PrintControiier во временной последовательности:

Приложение» :PrifltDocument iPrintContraUw

Приложению необходимо обратиться К методу Print класса PrintDocument, В результате запускается выполнение последовательности действий для вывода на печать. Поскольку сам по себе экземпляр класса PrintDocument не является ответственным за процесс вывода на печать, эта работа возлагается на PrintControiier посредством вызова метода Print о данного класса.

Теперь в дело вступает контроллер печати — он передает экземпляру класса PrintDocument информацию о начале печати, обращаясь к методу Onseginprint (). Если приложению необходимо выполнить какие-либо действия в момент начала печати, то следует зарегистрировать обработчик событий в PrintDocument — это позволит приложению узнать о начале печати. На представленной диаграмме
408 _________Глава 15

предполагается, что обработчик onBeginPrinto зарегистрирован, поэтому он может быть вызван ИЗ класса PrintDocument.

После завершения начального этапа printcontroller обращается к PrintLoopO, В котором вызывается метод OnPrintPageO класса PrintDocument для каждой страницы, предназначенной для вывода на печать. Метод OnPrintPageO вызывает все обработчики событий printpage. Такой обработчик необходимо реализовывать всегда, поскольку в противном случае на печать не будет выведено никакой информации, Обработчик с именем OnPrintPageO показан на диаграмме.
Предыдущая << 1 .. 184 185 186 187 188 189 < 190 > 191 192 193 194 195 196 .. 404 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.