Tisk a seznamy příkazů
Ovládací prvekDirect2Dje nová komponenta modulu Direct2D ve Windows 8. Tato komponenta umožňuje aplikacím Direct2D opakovaně používat volání výkresu Direct2D (z hlediska změn stavu a primitiv) k doručování výsledků tisku, které jsou podobné tomu, co vidíte na obrazovce.
Rozhraní ID2D1PrintControl představuje virtuální tiskovou úlohu: můžete vytvořit Direct2D ovládací prvek tisku, který zahájí novou tiskovou úlohu, předat obsah Direct2D pro každou stránku, kterou chcete vytisknout, a pak zavřít ovládací prvek tisku a dokončit tiskovou úlohu.
Poznámka
Ovládací prvek tisku se mapuje na jednu a přesně jednu tiskovou úlohu a nemůžete ji znovu použít.
Direct2D ovládací prvek tisku převede a optimalizuje předaný obsah Direct2D pro podsystém tisku, který pracuje se skutečnými tiskárnami k doručení skutečného výtisku. Všechny podrobnosti specifické pro tisk jsou skryté v aplikacích Direct2D, což znamená, že aplikace Direct2D můžou tisknout, aniž by věděly, na která zařízení jsou výkresy kreslené nebo jak se překládají na tisk.
Pokud chcete tisknout pomocí Direct2D, musíte připravit jeden seznam příkazů Direct2D pro každou stránku, kterou chcete vytisknout, a předat tento seznam příkazů do ovládacího prvku Direct2D tisku. Pokud chcete připravit tento seznam příkazů Direct2D, jednoduše vytvoříte a nastavíte seznam příkazů jako cíl výkresu aktuálního kontextu zařízení a potom na tento kontext zařízení nakreslíte přesně tak, jako kdybyste nakreslili rastrový obrázek pro zobrazení. Další informace o zařízeních a cíle ch najdete v tématu Zařízení a kontexty zařízení.
Diagram zde znázorňuje interakci mezi aplikací, kontextem zařízení, cílem rastrového obrázku, cílem seznamu příkazů a ovládacím prvku tisk.
Poznámka
Součásti Sub-System tisku a tiskárny systému Windows jsou šedé, protože jsou zcela skryté v aplikacích Direct2D.
Příklad
Celý proces tisku obsahu Direct2D zahrnuje následující kroky.
- Vytvořte ovládací prvek tisku, který zahájí tiskovou úlohu.
- Přidejte stránku do ovládacího prvku tisk předáním seznamu příkazů.
- Opakování kroku 2 pro každou stránku ve zbytku dokumentu
- Zavřete ovládací prvek tisku a dokončete tiskovou úlohu.
Tady je příklad kódu znázorňující proces.
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();