Compartir a través de


Impresión y listas de comandos

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

La interfaz ID2D1PrintControl representa un trabajo de impresión virtual: puede crear un control de impresión de Direct2D para iniciar un nuevo trabajo de impresión, pasar contenido de Direct2D para cada página que quiera 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 impresión están ocultos de las aplicaciones de Direct2D, lo que significa que las aplicaciones de Direct2D pueden imprimir sin saber a qué dispositivos están dibujando o cómo se traducen los dibujos a la impresión.

Para imprimir con Direct2D, debe preparar una lista de comandos de Direct2D para cada página que quiera 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. Consulta Dispositivos y contextos de dispositivo para obtener más información sobre los 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

Los componentes de impresión de Windows Sub-System e Impresora están en gris porque están completamente ocultos de las aplicaciones de Direct2D .

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

Ejemplo

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

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

Este es 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 y la impresión de Direct2D