Функции данного раздела помогут выводить информацию на принтер. Поскольку немалая часть библиотек имеют в себе возможности вывода на печать, во избежания наложения, я решил функции занести в пространство имен window9. Лишь две функции ( HWNDPrinter и TextPrinter ) глобальные и самодостаточные, доступ к остальным через имя window9
HWNDPrinter - выводит на печать клиентскую чать окна.
TextPrinter - выводит на печать любой объем текста, при этом форматируя его так, что текст размещается при необходимости на множестве страниц. Стандартное форматирование текста страдает и корректируется в соответствии со страницей печати. Функция может выводить выбираемым шрифтом, цветом фона текста и цветом самого текста. Планировалась в основном для объемного текста, который не нуждается в особом форматировании.
Для вывода на печать можно использовать функции пространства имен, а так же функции рисования без параметров прозрачности Alpha.
Список поддерживаемых функций рисования:
LineDraw
PixDraw
BoxDraw
RoundBoxDraw
RoundDraw
CircleDraw
FontDraw
TextDraw
PolylineDraw
FocusDraw
Если нужно использовать функции рисования, то необходимо корректировать размеры из-за большой разницы в размерах контекстов рисования и печати. Для этого нужно размеры умножать на процентное соотношение, которое находится в структуре типа SinglePoint параметра функции StartPrinter . Функция StartPrinter не только подготавливает печать и выводит стандартный диалог, но и возвращает HDC печати, а так же заполняет два имеющихся поля структуры (x и y).
Для примера:
#include "window9.bi"
Dim Po As window9.SinglePoint
window9.StartPrinter(@po)
window9.PageStart()
BoxDraw(10*po.x,10*po.y,100*po.x,100*po.y,,&hff00ff)
window9.PageEnd()
window9.StopPrinter()
Код выше выводит розовый прямоугольник на печать, и наверно видно что каждая координата умножается на процентное соотношение.
Функция TextDraw может выводить текст в любое место без ограничений использования шрифтов. На нее не влияют функции установки отступов текста.Текст может быть выведен под любым углом, при установке шрифта.
Пример:
#include "window9.bi"
Dim Po As window9.SinglePoint
window9.StartPrinter(@po)
window9.PageStart()
FontDraw(LoadFont("arial",22*po.x,45))
TextDraw(100*po.x,100*po.y,"FreeBasic",-1,&hFF0000)
window9.PageEnd()
window9.StopPrinter()
Как наверно заметили, размер шрифта то же корректируется.
Функции пространства имен:
StartPrinter -- выводит диалог параметры документа, подготовливает печать, возвращает контекст и процентное соотношение размеров HDC
StopPrinter -- заканчивает печать документа, освобождает ресурсы
FramePage -- выводит диалог параметры страницы , устанавливает предварительные координаты отступов, а так же получает их.
PrintText -- выводит текст в нужном прямоугольнике. Не может выводить текст под углом.
PrintImage -- выводит на печать битмап (рисунок)
ColorPrinter -- устанавливает цвет фона текста и цвет самого текста
FontPrinter -- устанавливает нужный шрифт
GetRealSize -- заполняет входные параметры функции размерами области печати, не включая отступы (область в рамках отступов)
GetCountLine -- возвращает кол-во возможных текстовых строк в области печати текущей страницы, может меняться из-за шрифта
GetFullSize -- заполняет входные параметры функции размерами области печати, включая отступы (вся область)
GetLenString -- получает длину строки в пикселях, может использоваться для контроля текста в рамках области печати.
PageStart -- начинает печать новой страницы документа
PageEnd -- заканчивает печать страницы
GetCountDoc -- получает кол-во копий документов
DocumentStart - начать новый документ
DocumentEnd -- закончить документ
Функция StartPrinter при первой инициализации необходима. С нее должна начинаться процедура печати.
Функции пространства имен используются с настоящими размерами, им не требуется процентно корректировать размеры.
Пример:
#include "window9.bi"
Dim font As FontPrint
font.Name_="Arial"
font.size=22
font.Italic=1
window9.StartPrinter()
window9.PageStart()
window9.FontPrinter(@font)
window9.PrintText("FreeBasic programming language",100,100,300,200,DT_WORDBREAK )
window9.PageEnd()
window9.StopPrinter()
Created with the Personal Edition of HelpNDoc: Write EPub books for the iPad