印刷とコマンドの一覧

Direct2D印刷コントロールは、Windows 8の Direct2D モジュールの新しいコンポーネントです。 このコンポーネントを使用すると、Direct2D アプリは Direct2D 描画呼び出し (状態の変更と表示プリミティブの観点から) を再利用して、画面に表示されるのと同様の印刷結果を提供できます。

ID2D1PrintControl インターフェイスは、仮想印刷ジョブを表します。Direct2D 印刷コントロールを作成して新しい印刷ジョブを開始し、印刷するページごとに Direct2D コンテンツを渡してから、印刷コントロールを閉じて印刷ジョブを完了できます。

注意

印刷コントロールは、1 つの印刷ジョブと正確に 1 つの印刷ジョブにマップされ、再利用することはできません。

Direct2D 印刷コントロールは、実際のプリンターと連携して実際の印刷出力を提供する印刷サブシステムに渡された Direct2D コンテンツを変換および最適化します。 すべての印刷固有の詳細は Direct2D アプリから非表示になります。つまり、Direct2D アプリは、描画先のデバイスや、図面を印刷に変換する方法を知らなくても印刷できます。

Direct2D で印刷するには、印刷するページごとに 1 つの Direct2D コマンド リストを準備し、そのコマンド リストを Direct2D 印刷コントロールに渡す必要があります。 Direct2D コマンド リストを準備するには、コマンド リストを現在のデバイス コンテキストの描画ターゲットとして作成して設定し、表示するビットマップ ターゲットに描画する場合とまったく同じように、そのデバイス コンテキストに描画します。 デバイスとターゲットの詳細については、「 デバイスとデバイス コンテキスト 」を参照してください。

次の図は、アプリ、デバイス コンテキスト、ビットマップ ターゲット、コマンド リスト ターゲット、および印刷コントロール間の相互作用を示しています。

注意

Windows Print Sub-System コンポーネントと Printer コンポーネントは 、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 アプリケーションと印刷のパフォーマンスの向上