Share via


Impression et listes de commandes

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

L’interface ID2D1PrintControl représente un travail d’impression virtuelle : 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 un travail d’impression.

Notes

Un contrôle d’impression correspond à un seul et même travail d’impression, et vous ne pouvez pas le réutiliser.

Le contrôle d’impression Direct2D convertit et optimise le contenu Direct2D transmis pour le sous-système d’impression, qui fonctionne avec les imprimantes réelles pour fournir l’impression réelle. Tous les détails spécifiques à l’impression sont masqués dans les applications Direct2D, ce qui signifie que les applications Direct2D peuvent imprimer sans savoir sur quels appareils elles dessinent ou comment les dessins sont traduits en impression.

Pour imprimer avec Direct2D, vous devez préparer une liste de commandes Direct2D pour chaque page à imprimer, puis passer cette liste de commandes au contrôle 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 d’appareil actuel, puis de dessiner dans ce contexte d’appareil, exactement comme si vous dessiniez vers une cible bitmap pour l’affichage. Pour plus d’informations sur les appareils et les cibles, consultez Appareils et contextes d’appareil.

Le diagramme illustre ici l’interaction entre l’application, le contexte de l’appareil, la cible bitmap, la cible de liste de commandes et le contrôle d’impression.

Notes

Les composants Impression windows Sub-System et Imprimante sont en gris, car ils sont complètement masqués des applications Direct2D .

diagramme qui montre 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 un contrôle 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 le contrôle d’impression pour terminer le travail d’impression.

Voici un exemple de code montrant 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