Printer

Previous Next

Язык программирования FreeBasic

 

Ознакомление по печати

Функции данного раздела помогут выводить информацию на принтер. Поскольку немалая часть библиотек имеют в себе возможности вывода на печать, во избежания наложения, я решил функции занести в пространство имен window9. Лишь две функции ( HWNDPrinter и TextPrinter ) глобальные и самодостаточные, доступ к остальным через имя window9

HWNDPrinter - выводит на печать клиентскую чать окна.

TextPrinter - выводит на печать любой объем текста, при этом форматируя его так, что текст размещается при необходимости на множестве страниц. Стандартное форматирование текста страдает и корректируется в соответствии со страницей печати. Функция может выводить выбираемым шрифтом, цветом фона текста и цветом самого текста. Планировалась в основном для объемного текста, который не нуждается в особом форматировании.

Для вывода на печать можно использовать функции пространства имен, а так же функции рисования без параметров прозрачности Alpha.

Список поддерживаемых функций рисования:

  1. LineDraw
  2. PixDraw
  3. BoxDraw
  4. RoundBoxDraw
  5. RoundDraw
  6. CircleDraw
  7. FontDraw
  8. TextDraw
  9. PolylineDraw
  10. 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()


Как наверно заметили, размер шрифта то же корректируется.

Функции пространства имен:

  1. StartPrinter  -- выводит диалог параметры документа, подготовливает печать, возвращает контекст и процентное соотношение размеров HDC
  2. StopPrinter  -- заканчивает печать документа, освобождает ресурсы
  3. FramePage -- выводит диалог параметры страницы , устанавливает предварительные координаты отступов, а так же получает их.
  4. PrintText -- выводит текст в нужном прямоугольнике. Не может выводить текст под углом.
  5. PrintImage -- выводит на печать битмап (рисунок)
  6. ColorPrinter -- устанавливает цвет фона текста и цвет самого текста
  7. FontPrinter -- устанавливает нужный шрифт
  8. GetRealSize -- заполняет входные параметры функции размерами области печати, не включая отступы (область в рамках отступов) 
  9. GetCountLine -- возвращает кол-во возможных текстовых строк в области печати текущей страницы, может меняться из-за шрифта
  10. GetFullSize -- заполняет входные параметры функции размерами области печати, включая отступы (вся область)
  11. GetLenString -- получает длину строки в пикселях, может использоваться для контроля текста в рамках области печати.
  12. PageStart -- начинает печать новой страницы документа
  13. PageEnd -- заканчивает печать страницы
  14. GetCountDoc -- получает кол-во копий документов
  15. DocumentStart - начать новый документ
  16. 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()

 

 


http://mneniya.ucoz.ru/

Created with the Personal Edition of HelpNDoc: Write eBooks for the Kindle