Freigeben über


Drucken und Befehlslisten

Das Direct2D Print-Steuerelement ist eine neue Komponente im Direct2D Modul von Windows 8. Mit dieser Komponente können Direct2D-Apps ihre Direct2D-Zeichenaufrufe (in Bezug auf Statusänderungen und Rendering-Primitiven) wiederverwenden, um Druckergebnisse zu liefern, die dem ähneln, was Sie auf dem Bildschirm sehen.

Die Schnittstelle ID2D1PrintControl stellt einen virtuellen Druckauftrag dar: Sie können ein Direct2D-Steuerelement erstellen, um einen neuen Druckauftrag zu initiieren, Direct2D-Inhalte für jede zu druckende Seite übergeben und dann das Steuerelement schließen, um einen Druckauftrag abzuschließen.

Hinweis

Ein Steuerelement wird genau einem einzigen Druckauftrag zugeordnet und kann nicht wiederverwendet werden.

Das Direct2D-Print-Steuerelement konvertiert und optimiert die übergebenen Direct2D-Inhalte für das Drucksubsystem, das mit den echten Druckern zusammenarbeitet, um den tatsächlichen Ausdruck zu liefern. Alle druckspezifischen Details bleiben vor Direct2D-Apps verborgen. Das bedeutet, dass Direct2D-Apps drucken können, ohne zu wissen, auf welche Geräte sie zeichnen oder wie die Zeichnungen für den Druck übersetzt werden.

Um mit Direct2D zu drucken, müssen Sie eine Direct2D-Befehlsliste für jede zu druckende Seite vorbereiten und diese Befehlsliste dann an das Direct2D-Print-Steuerelement weitergeben. Um diese Direct2D-Befehlsliste vorzubereiten, erstellen Sie einfach eine Befehlsliste und legen diese als Ziel für den aktuellen Gerätekontext fest. Dann zeichnen Sie in diesen Gerätekontext, genau so, als ob Sie in ein Bitmap-Ziel für den Bildschirm zeichnen würden. Unter Geräte und Gerätekontexte finden Sie weitere Informationen zu Geräten und Zielen.

Das folgende Diagramm veranschaulicht die Interaktion zwischen App, Gerätekontext, Bitmap-Ziel, Befehlslistenziel und dem Print-Steuerelement.

Hinweis

Das Windows-Drucksubsystem und die Druckerkomponenten sind grau dargestellt, da sie für Direct2D-Apps komplett verborgen sind.

Ein Diagramm, das zeigt, wie die Befehlsliste und das Drucken mit einer App und Direct2D interagieren.

Beispiel

Der gesamte Prozess des Druckens von Direct2D-Inhalten umfasst die folgenden Schritte.

  1. Erstellen eines Print-Steuerelement, um einen Druckauftrag zu initiieren.
  2. Hinzufügen einer Seite zum Print-Steuerelement, indem Sie eine Befehlsliste übergeben.
  3. Wiederholen von Schritt 2 für jede Seite im Rest des Dokuments
  4. Schließen des Print-Steuerelement, um den Druckauftrag abzuschließen.

Hier ist ein Code-Beispiel, das den Prozess zeigt.

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

Verbesserung der Leistung von Direct2D-Anwendungen und Druck