КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Вопросы и упражнения
Класс Tprinter. Печать графики Вопросы и упражнения. 1. К пунктам меню редактора с использованием компонента Memo из предыдущих заданий добавьте пункт печати документа. 2. Как установить параметры печати? 3. В каких случаях удобно использовать процедуры Writeln, write, и в каких – процедуру TextOut? 4. В чем отличие и сходство объектов со списками строк? Какие элементы ср списками строк вы знаете.? 5. Напишите программу чтения списка класса из файлов в компоненту listbox с возможностью печати на принтере. Класс выбирается из файла по числу и литеру (например, 10-А).
Прежде чем приступить к освоению техники печати графики и текста в режиме WYSIWYG, познакомимся со свойствами и методами класса Tprinter. Свойства класса Tprinter. · Aborted. Это свойство позволяет определить, что пользователь прервал печать. В таком случае оно принимает значение True. · Canvas. Для печати графики и текста в режиме WYSIWYG пользуется свойствами и методами объекта Canvas точно так же, как и для отображения на экране. · Capabilities. Это свойство представляет собой набор значений, определяющих возможности драйвера принтера, например pcCopies, pcOrientation и pcCollation. · Copies. Это количество копий, которые должны быть напечатаны. · Fonts. Это список всех шрифтов, которые поддерживают текущий принтер. Его тип – Tstrings. · Handle. Значение этого свойства можно передать любой функции Windows API, которой требуется дескриптор контекста устройства(HDC), например функции GetTextMetrics. · Orientation. Это свойство может иметь одно из двух значений: poPortrait (книжная ориентация страницы) или poLandscape (аль-бомная ориентация страницы). · PageHeight. Это высота страницы в пикселях. Она зависит от типа принтера и для разных принтеров может сильно отличаться.
· PageNumber. Это номер текущей страницы. Объект Printer увеличивает значение PageNumber на единицу при каждом обращении к свойству NewPage. · PageWidth. Это ширина страницы в пикселях. · PrinterIndex. Это индекс имени текущего принтера в списке свойства Printers. · Printers. Это список установленных принтеров, представляющий собой объект класса Tstrings. Имя текущего принтера определяется выражением Printer.Printers[printIndex]. · Printing. В процессе печати принимает значение True. · Title. Служит для присвоения строки, которая будет идентифицировать задание в окне диспетчера печати или служить заголовком задания в сети. Методы класса Tprinter. К основным методам класса Tprinter относятся: · Abort. Используется для прерывания работы принтера. Вызывается метод выражением Printer.Abort. Метод Abort присваивает флагу Printer.Aborted значение True. · BeginDoc. Этот метод вызывается перед началом очередного задания для принтера. Не применяется в тех случаях, когда для печати чистого текста применяются процедуры Write и Writeln. · EndDoc. Используется после окончания задания. Этот метод очищает буфер вывода и при необходимости выполняет прогон последней страницы. Не применяется в тех случаях, когда для печати чистого текста применяются процедуры Write и Writeln. · NewPage. Этот метод вызывается перед печатью новой страницы. Пусть требуется вывести на печать рисунки, помещенные в графические объекты Image1 и Image2 (см. рис.78). Для печати графики необходимо использовать следующую процедуру Printer.Canvas.Draw(X,Y,image1.picture.Graphic), где X,Y координаты холста принтера, но прежде не забудьте включить в список используемых модулей модуль printers. Приведем код обработки щелчка по кнопке “Печать”. unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, printers;{модуль printers допишите сами} type TForm1 = class(TForm) Image1: TImage; BitBtn1: TBitBtn; Image2: TImage; procedure BitBtn1Click(Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; implementation
{$R *.DFM} procedure TForm1.BitBtn1Click(Sender: TObject); begin printer.BeginDoc; Try Printer.Canvas.Draw(10,0,image1.picture.Graphic); Printer.Canvas.Draw(100,200,image2.picture.Graphic); finally Printer.EndDoc; end; end; end. Рис.78. Рис.79. Чтобы увеличить изображение, нужно выяснить разрешение печатающего устройства с помощью функции Windows API GetDeviceCaps (запрос сведений о возможности устройства), а в качестве параметра, определяющего, какое значение из контекста устройства принтера мы запрашиваем, передаем функции сначала logPixelsX, а затем – logPixelsY. Мы получим два числа, определяющих количество пикселей на логический дюйм по горизонтали и по вертикали. Разделив их на значение свойства формы PixelsPerInch, мы получим коэффициент увеличения изображения для печати. Рассмотрим пример настройки масштаба печати в соответствии с разрешением принтера (см. рис.79). Приведем код модуля. unit Unit1; interface uses SysUtils,Windows, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls,printers; type TForm1 = class(TForm) Image1: TImage; BitBtn1: TBitBtn; procedure BitBtn1Click(Sender: TObject); private {Private declarations} public {Public declarations} end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.BitBtn1Click(Sender: TObject); var ScaleX,ScaleY:integer; R:Trect; begin printer.BeginDoc; with Printer do Try ScaleX:=GetDeviceCaps(Handle,logPixelsX) div PixelsPerInch; ScaleY:=GetDeviceCaps(Handle,logPixelsY) div PixelsPerInch; R:=Rect(0,0,Image1.Picture.Width*ScaleX,Image1.Picture.Height*ScaleY); Canvas.StretchDraw(R,image1.Picture.Graphic); Finally Printer.EndDoc; end; end; end. Для организации требований WYSIWYG необходимо в программе позиционировать элементы печатаемого изображения. Определенный в Delphi класс Tbitmap упрощает создание окна предварительного просмотра. 1. В созданном Вами редакторе текстов реализуйте предварительный просмотр документов. 2. Перечислите методы класса Tprinter. 3. Введите с клавиатуры имя графического файла для печати и распечатайте изображение с увеличением высоты изображения в 2 раза. 4. Распечатайте текст из строкового массива различными стилями шрифта и размером букв. 5. Как получить Dump экрана средствами Delphi?
Дата добавления: 2014-01-05; Просмотров: 438; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |