Dela via


Utskrifts- och kommandolistor

Direct2Dutskriftskontroll är en ny komponent i Direct2D-modulen i Windows 8. Med den här komponenten kan Direct2D-appar återanvända sina Direct2D-ritningsanrop (när det gäller tillståndsändringar och avstående primitiver) för att leverera utskriftsresultat som liknar det du ser på skärmen.

Gränssnittet ID2D1PrintControl representerar ett virtuellt utskriftsjobb: du kan skapa en Direct2D- utskriftskontroll för att initiera ett nytt utskriftsjobb, skicka in Direct2D-innehåll för varje sida som du vill skriva ut och sedan stänga utskriftskontrollen för att slutföra ett utskriftsjobb.

Not

En utskriftskontroll mappar till ett och exakt ett utskriftsjobb, och du kan inte återanvända det.

Direct2D- utskriftskontroll konverterar och optimerar det skickade Direct2D-innehållet för utskriftsundersystemet, som fungerar med de riktiga skrivarna för att leverera den faktiska utskriften. All utskriftsspecifik information är dold från Direct2D-appar, vilket innebär att Direct2D-appar kan skrivas ut utan att veta vilka enheter de ritar till eller hur ritningarna översätts till utskrift.

Om du vill skriva ut med Direct2D-måste du förbereda en Direct2D-kommandolista för varje sida som du vill skriva ut och sedan skicka kommandolistan till Direct2D-utskriftskontrollen. För att förbereda direct2D-kommandolistan skapar och anger du bara en kommandolista som ritningsmål för den aktuella enhetskontexten och ritar sedan till enhetskontexten, precis som om du ritar till ett bitmappsmål för visning. Mer information om enheter och mål finns i Enheter och enhetskontexter.

Diagrammet här illustrerar interaktionen mellan appen, enhetskontexten, bitmappsmålet, kommandolistans mål och utskriftskontrollen.

Not

Komponenterna Windows Print Sub-System och Printer är grå eftersom de är helt dolda från Direct2D- appar.

ett diagram som visar hur kommandolistan och utskriften interagerar med en app och direct2d.

Exempel

Den fullständiga processen med att skriva ut Direct2D-innehåll innehåller följande steg.

  1. Skapa en utskriftskontroll för att initiera ett utskriftsjobb.
  2. Lägg till en sida i utskriftskontrollen genom att skicka in en kommandolista.
  3. Upprepa steg 2 för varje sida i resten av dokumentet
  4. Stäng utskriftskontrollen för att slutföra utskriftsjobbet.

Här är ett kodexempel som visar processen.

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

Förbättra prestanda för Direct2D-program och utskrift