Студопедия

КАТЕГОРИИ:


Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.