共用方式為


列印和命令清單

Direct2D 列印控件是 Windows 8 中 Direct2D 模組中的新元件。 此元件可讓 Direct2D 應用程式重複使用其 Direct2D 繪圖呼叫(就狀態變更和轉譯基本類型而言),以提供與畫面上所看到的類似之列印結果。

ID2D1PrintControl 介面代表虛擬列印作業:您可以建立 Direct2D 列印控件來起始新的列印作業、傳入您想要列印的每個頁面的 Direct2D 內容,然後關閉列印控件以完成列印作業。

注意

列印控件對應至一個和一個列印作業,而且您無法重複使用它。

Direct2D 列印控件會針對列印子系統轉換並優化傳入的 Direct2D 內容,其可與實際印表機搭配使用,以傳遞實際的列印輸出。 所有列印特定詳細數據都會從 Direct2D 應用程式隱藏,這表示 Direct2D 應用程式可以列印,而不需要知道要繪製的裝置,或繪圖如何轉譯成列印。

若要使用 Direct2D 列印,您必須針對您想要列印的每個頁面準備一個 Direct2D 命令清單,然後將該命令清單傳遞至 Direct2D 列印控件。 若要準備 Direct2D 命令清單,您只需建立並設定命令清單做為目前裝置內容的繪圖目標,然後繪製到該裝置內容,就如同您繪製至位圖目標一樣顯示。 如需裝置和目標的詳細資訊,請參閱裝置和裝置內容。

下圖說明應用程式、裝置內容、點陣圖目標、命令清單目標與列印控件之間的互動。

注意

Windows 列印子系統和列印機組件會呈現灰色,因為它們完全隱藏在 Direct2D 應用程式中。

顯示命令清單和列印如何與應用程式互動和 direct2d 的圖表。

範例

列印 Direct2D 內容的完整程式包含下列步驟。

  1. 建立列印控件以起始列印作業。
  2. 藉由傳入命令清單,將頁面新增至列印控件。
  3. 針對檔其餘部分的每個頁面重複步驟 2
  4. 關閉列印控件以完成列印作業。

以下是顯示進程的程式代碼範例。

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

改善 Direct2D 應用程式和列印的效能