Impression et listes de commandes

Le contrôle d'impression Direct2D est un nouveau composant du module Direct2D de Windows 8. Ce composant permet aux applications Direct2D de réutiliser leurs appels de dessin Direct2D (en termes de changements d'état et de primitives de rendu) pour fournir des résultats d'impression similaires à ce que vous voyez à l'écran.

L'interface ID2D1PrintControl représente un travail d'impression virtuel : vous pouvez créer un contrôle d'impression Direct2D pour lancer un nouveau travail d'impression, transmettre le contenu Direct2D pour chaque page à imprimer, puis fermer le contrôle d'impression pour terminer le travail d'impression.

Remarque

Une commande d'impression correspond à un seul et unique travail d'impression, et vous ne pouvez pas la réutiliser.

Le contrôle d'impression Direct2D convertit et optimise le contenu Direct2D passé pour le sous-système d'impression, qui travaille avec les imprimantes réelles pour fournir l'impression réelle. Tous les détails spécifiques à l'impression sont cachés aux applications Direct2D, ce qui signifie que les applications Direct2D peuvent imprimer sans savoir vers quels appareils elles dessinent, ni comment les dessins sont traduits pour l'impression.

Pour imprimer avec Direct2D, vous devez préparer une liste de commandes Direct2D pour chaque page que vous souhaitez imprimer, puis transmettre cette liste de commandes à la commande d'impression Direct2D. Pour préparer cette liste de commandes Direct2D, il vous suffit de créer et de définir une liste de commandes comme cible de dessin du contexte de l'appareil actuel, puis de dessiner vers ce contexte, exactement comme si vous dessiniez vers une cible bitmap pour l'affichage. Pour plus d'informations sur les appareils et les cibles, reportez-vous à la section Appareils et contextes d'appareils.

Le diagramme ci-dessous illustre l'interaction entre l'application, le contexte de l'appareil, la cible bitmap, la cible de la liste de commandes et la commande d'impression.

Remarque

Le sous-système d'impression Windows et les composants de l'imprimante sont en gris parce qu'ils sont complètement cachés aux applications Direct2D.

un diagramme montrant comment la liste de commandes et l'impression interagissent avec une application et direct2d.

Exemple

Le processus complet d'impression du contenu Direct2D comprend les étapes suivantes.

  1. Créez une commande d'impression pour lancer un travail d'impression.
  2. Ajoutez une page au contrôle d'impression en transmettant une liste de commandes.
  3. Répétez l'étape 2 pour chaque page du reste du document.
  4. Fermez la commande d'impression pour terminer le travail d'impression.

Voici un exemple de code illustrant le processus.

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

Amélioration des performances des applications Direct2D et de l'impression