Кент Рейсдорф. BORLAND C++BUILDER. Раздел 3
Кент Рейсдорф. BORLAND C++BUILDER. Страница 386
Хорошая новость состоит в том, что VCL охраняет вас от необходимости знать все подробности контекстов устройств. VCL инкапсулирует DC Windows в классе TCanvas. Каждая форма в С+-l-Builder имеет свой собственный холст, который представлен свойством Canvas. В любой момент, когда вам нужно что-либо нарисовать непосредственно в форме, вы делаете это, обращаясь к свойству Canvas. Например, следующий код проведет в форме диагональную линию из левого верхнего в правый нижний угол:
Canvas->MoveTo(0, 0) ;
Canvas->LineTo(ClientRect.Right, ClientRect.Bottom);
Тип рисуемой линии будет определяться текущим пером, которое задано свойством Реп холста.
Приятная особенность свойства Canvas — это то, что вы не должны беспокоиться обо всех мелких подробностях контекстов устройств Windows, которые могут сами начать управлять вами, сводя с ума. VCL позаботится о получении DC, выборе соответствующих объектов в DC и освобождении DC, когда он больше не нужен. Все, что от вас требуется — это нарисовать что-либо на холсте и предоставить VCL остальную работу.
Какое отношение все это имеет к печати? Самое прямое: Windows позволяет вам получить контекст устройства принтера, на котором вы можете рисовать текст, графику, линии и т.д. Другими словами, вы рисуете на DC принтера точно так же, как на DC экрана. Эта концепция резко отличается от того подхода к печати, который был реализован в старой доброй DOS. Теперь Windows приходит нам на помощь, позволяя использовать DC принтера. VCL помогает нам еще больше, инкапсулируя контексты устройств в свойстве Canvas. Таким образом, печать становится проще, чем когда-либо прежде.
Класс TPrinter и функция Printer()
VCL помогает выполнять операции печати, предоставляя в ваше распоряжение класс TPrinter. Этот класс инкапсулирует всю печать Windows. TPrinter имеет свойство Canvas, которое может использоваться для вывода линий, текста, графики и других рисуемых объектов на принтер. Я не хочу, чтобы это выглядело слишком просто, но все, что вы должны сделать для печати из своих программ С+-t-Builder — включить заголовочный файл Printers. hpp, а затем написать код наподобие следующего: