Поделиться через


Печать и списки команд

Элемент управления печати Direct2D — это новый компонент модуля Direct2D в Windows 8. Этот компонент позволяет приложениям Direct2D повторно использовать вызовы рисования Direct2D (с точки зрения изменений состояния и примитивов отображения) для доставки результатов печати, аналогичных отображаемым на экране.

Интерфейс ID2D1PrintControl представляет задание виртуальной печати: вы можете создать элемент управления печати Direct2D для запуска нового задания печати, передать содержимое Direct2D для каждой страницы, которую вы хотите распечатать, а затем закрыть элемент управления печати, чтобы завершить задание печати.

Примечание.

Элемент управления печатью сопоставляется с одним заданием печати и не может повторно использовать его.

Элемент управления печати Direct2D преобразует и оптимизирует переданное содержимое Direct2D для подсистемы печати, которая работает с реальными принтерами для доставки фактической печати. Все сведения, относящиеся к печати, скрыты от приложений Direct2D, что означает, что приложения Direct2D могут печатать, не зная, на какие устройства они рисуются, или как рисунки переводятся на печать.

Чтобы распечатать с помощью Direct2D, необходимо подготовить один список команд Direct2D для каждой страницы, которую нужно распечатать, а затем передать этот список команд в элемент управления печати Direct2D. Чтобы подготовить этот список команд Direct2D, просто создайте и задайте список команд в качестве целевого объекта рисования текущего контекста устройства, а затем нарисуйте этот контекст устройства точно так же, как если бы вы рисовали в целевой объект растрового изображения для отображения. Дополнительные сведения о устройствах и целевых объектах см. в контекстах устройств и устройств.

На схеме показано взаимодействие между приложением, контекстом устройства, растровым изображением, целевым объектом списка команд и элементом управления печатью.

Примечание.

Компоненты подсистемы и принтера Windows Print находятся в сером цвете, так как они полностью скрыты от приложений Direct2D .

Схема, на которой показано, как командный список и печать взаимодействуют с приложением и direct2d.

Пример

Полный процесс печати содержимого Direct2D включает следующие действия.

  1. Создайте элемент управления печати для запуска задания печати.
  2. Добавьте страницу в элемент управления печати, передав список команд.
  3. Повторите шаг 2 для каждой страницы в остальной части документа
  4. Закройте элемент управления печати, чтобы завершить задание печати.

Ниже приведен пример кода, показывающий процесс.

ID2D1CommandList* commandList;
// Skip command list creation and drawing for simplicity.

// Set print control properties.
D2D1_PRINT_CONTROL_PROPERTIES printControlProperties;
printControlProperties.rasterDPI = 150.0f; // Use the default rasterization DPI for all unsupported Direct2D commands 
                                                                                                                                                                            //  or options.
printControlProperties.fontSubset = D2D1_PRINT_FONT_SUBSET_MODE_DEFAULT; // Using the default font subset strategy.
printControlProperties.colorSpace = D2D1_COLOR_SPACE_SRGB; // Color space for vector graphics in Direct2D print control.

// Create a Direct2D Print Control to initiate a print job.
ID2D1PrintControl* d2dPrintControl;
d2dDevice->CreatePrintControl(
    wicFactory,
    documentTarget,
    printControlProperties,
    &d2dPrintControl
    );

// Add Direct2D drawing commands encapsulated in a command list.
// You can add in more pages by calling this API multiple times.
d2dPrintControl->AddPage(commandList);

// Close the print control to complete a print job.
d2dPrintControl->Close();

ID2D1CommandList

ID2D1PrintControl

Повышение производительности приложений Direct2D и печати