Mencetak dan daftar perintah
Kontrol cetak Direct2D adalah komponen baru dalam modul Direct2D di Windows 8. Komponen ini memungkinkan aplikasi Direct2D menggunakan kembali panggilan gambar Direct2D mereka (dalam hal perubahan status dan primitif rending) untuk memberikan hasil pencetakan yang mirip dengan apa yang Anda lihat di layar.
Antarmuka ID2D1PrintControl mewakili pekerjaan cetak virtual: Anda dapat membuat kontrol cetak Direct2D untuk memulai pekerjaan cetak baru, meneruskan konten Direct2D untuk setiap halaman yang ingin Anda cetak, lalu menutup kontrol cetak untuk menyelesaikan pekerjaan cetak.
Catatan
Kontrol cetak memetakan ke satu dan tepat satu pekerjaan cetak, dan Anda tidak dapat menggunakannya kembali.
Kontrol cetak Direct2D mengonversi dan mengoptimalkan konten Direct2D yang diteruskan untuk sub-sistem cetak, yang bekerja dengan printer nyata untuk memberikan cetakan aktual. Semua detail khusus cetak disembunyikan dari aplikasi Direct2D, yang berarti aplikasi Direct2D dapat mencetak tanpa mengetahui perangkat apa yang mereka gambar, atau bagaimana gambar diterjemahkan ke pencetakan.
Untuk mencetak dengan Direct2D, Anda perlu menyiapkan satu daftar perintah Direct2D untuk setiap halaman yang ingin Anda cetak, lalu teruskan daftar perintah tersebut ke kontrol cetak Direct2D. Untuk menyiapkan daftar perintah Direct2D tersebut, Anda cukup membuat dan menetapkan daftar perintah sebagai target gambar konteks perangkat saat ini, lalu menggambar ke konteks perangkat tersebut, persis seolah-olah Anda menggambar ke target bitmap untuk ditampilkan. Lihat Konteks Perangkat dan Perangkat untuk informasi selengkapnya tentang perangkat dan target.
Diagram di sini mengilustrasikan interaksi antara aplikasi, konteks perangkat, target bitmap, target daftar perintah, dan kontrol cetak.
Catatan
Komponen Sub-Sistem dan Printer Windows Print berwarna abu-abu karena sepenuhnya tersembunyi dari aplikasi Direct2D .
Contoh
Proses lengkap pencetakan konten Direct2D mencakup langkah-langkah berikut.
- Buat kontrol cetak untuk memulai pekerjaan cetak.
- Tambahkan halaman ke kontrol cetak dengan meneruskan daftar perintah.
- Ulangi langkah 2 untuk setiap halaman di sisa dokumen
- Tutup kontrol cetak untuk menyelesaikan tugas cetak.
Berikut adalah contoh kode yang menunjukkan prosesnya.
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();