Impresión y listas de comandos

El control de impresión Direct2D es un nuevo componente en el módulo Direct2D en Windows 8. Este componente permite a las aplicaciones Direct2D reutilizar sus llamadas de dibujo Direct2D (en términos de cambios de estado y primitivos de representación) para proporcionar resultados de impresión similares a los que se ven en la pantalla.

La interfaz ID2D1PrintControl representa un trabajo de impresión virtual: puede crear un control de impresión direct2D para iniciar un nuevo trabajo de impresión, pasar contenido de Direct2D para cada página que desee imprimir y, a continuación, cerrar el control de impresión para completar un trabajo de impresión.

Nota:

Un control de impresión se asigna a uno y exactamente un trabajo de impresión y no se puede reutilizar.

El control de impresión Direct2D convierte y optimiza el contenido pasado en Direct2D para el subsistema de impresión, que funciona con las impresoras reales para entregar la impresión real. Todos los detalles específicos de la impresión se ocultan a las aplicaciones de Direct2D, lo que significa que aplicaciones de Direct2D pueden imprimir sin saber a qué dispositivos están dibujando o cómo se convierten los dibujos a la impresión.

Para imprimir con Direct2D, debe preparar una lista de comandos de Direct2D para cada página que desea imprimir y, a continuación, pasar esa lista de comandos al control de impresión de Direct2D. Para preparar esa lista de comandos de Direct2D, basta con crear y establecer una lista de comandos como destino de dibujo del contexto de dispositivo actual y, a continuación, dibujar en ese contexto de dispositivo, exactamente como si estuviera dibujando en un destino de mapa de bits para su visualización. Consulte Dispositivos y contextos de dispositivo para obtener más información sobre dispositivos y destinos.

En este diagrama se muestra la interacción entre la aplicación, el contexto del dispositivo, el destino de mapa de bits, el destino de la lista de comandos y el control de impresión.

Nota:

El subsistema de impresión de Windows y los componentes de la impresora aparecen atenuados porque están completamente ocultos de las aplicaciones Direct2D.

un diagrama que muestra cómo la lista de comandos y la impresión interactúan con una aplicación y direct2d.

Ejemplo

El proceso completo de impresión de contenidos de Direct2D incluye los pasos siguientes.

  1. Crear un control de impresión para iniciar un trabajo de impresión.
  2. Agregar una página al control de impresión pasando una lista de comandos.
  3. Repita el paso 2 para cada página en el resto del documento
  4. Cierre el control de impresión para completar el trabajo de impresión.

He aquí un ejemplo de código que muestra el proceso.

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

Mejora del rendimiento de las aplicaciones e impresión de Direct2D