Condividi tramite


Elenchi di stampa e comandi

Il controllo di stampa Direct2D è un nuovo componente del modulo Direct2D in Windows 8. Questo componente consente alle app Direct2D di riutilizzare le chiamate di disegno Direct2D (in termini di modifiche di stato e rendering delle primitive) per fornire risultati di stampa simili a quanto visualizzato sullo schermo.

L'interfaccia ID2D1PrintControl rappresenta un processo di stampa virtuale: è possibile creare un controllo di stampa Direct2D per avviare un nuovo processo di stampa, passare il contenuto Direct2D per ogni pagina da stampare, quindi chiudere il controllo di stampa per completare un processo di stampa.

Nota

Un controllo di stampa esegue il mapping a uno e esattamente a un processo di stampa e non può essere riutilizzato.

Il controllo di stampa Direct2D converte e ottimizza il contenuto passato in Direct2D per il sotto-sistema di stampa, che funziona con le stampanti reali per fornire il stampato effettivo. Tutti i dettagli specifici della stampa sono nascosti dalle app Direct2D, il che significa che le app Direct2D possono stampare senza sapere quali dispositivi stanno disegnando o come i disegni vengono convertiti in stampa.

Per stampare con Direct2D, è necessario preparare un elenco di comandi Direct2D per ogni pagina da stampare, quindi passare tale elenco di comandi al controllo di stampa Direct2D. Per preparare l'elenco di comandi Direct2D, è sufficiente creare e impostare un elenco di comandi come destinazione di disegno del contesto di dispositivo corrente, quindi disegnare in tale contesto di dispositivo, esattamente come se si disegnasse in una destinazione bitmap per la visualizzazione. Per altre informazioni su dispositivi e destinazioni, vedi Dispositivi e contesti di dispositivo.

Il diagramma seguente illustra l'interazione tra l'app, il contesto del dispositivo, la destinazione bitmap, la destinazione dell'elenco di comandi e il controllo di stampa.

Nota

I componenti Windows Print Sub-System e Printer sono in grigio perché sono completamente nascosti dalle app Direct2D .

diagramma che mostra come l'elenco dei comandi e la stampa interagiscono con un'app e direct2d.

Esempio

Il processo completo di stampa del contenuto Direct2D include i passaggi seguenti.

  1. Creare un controllo di stampa per avviare un processo di stampa.
  2. Aggiungere una pagina al controllo di stampa passando un elenco di comandi.
  3. Ripetere il passaggio 2 per ogni pagina nel resto del documento
  4. Chiudere il controllo stampa per completare il processo di stampa.

Ecco un esempio di codice che mostra il processo.

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

Miglioramento delle prestazioni delle applicazioni e della stampa Direct2D