Yazdırma ve komut listeleri
Direct2Dyazdırma denetimi, Windows 8'deki Direct2D modülündeki yeni bir bileşendir. Bu bileşen, Direct2D uygulamalarının ekranda gördüklerinize benzer yazdırma sonuçları sunmak için Direct2D çizim çağrılarını (durum değişiklikleri ve geri döndürme temel öğeleri açısından) yeniden kullanmasına olanak tanır.
ID2D1PrintControl arabirimi bir sanal yazdırma işini temsil eder: Yeni bir yazdırma işi başlatmak için Direct2D yazdırma denetimi oluşturabilir, yazdırmak istediğiniz her sayfanın Direct2D içeriğini geçirebilir ve yazdırma işini tamamlamak için yazdırma denetimini kapatabilirsiniz.
Not
Yazdırma denetimi bir ve tam olarak bir yazdırma işiyle eşler ve bunu yeniden kullanamazsınız.
Direct2D yazdırma denetimi, gerçek çıktıyı sağlamak için gerçek yazıcılarla birlikte çalışan yazdırma alt sistemi için Direct2D içeriğine dönüştürür ve en iyi duruma getirir. Yazdırmaya özgü tüm ayrıntılar Direct2D uygulamalarından gizlenir; bu da Direct2D uygulamalarının hangi cihazlara çizim yaptıklarını veya çizimlerin yazdırmaya nasıl çevrildiklerini bilmeden yazdırabileceği anlamına gelir.
Direct2Dile yazdırmak için, yazdırmak istediğiniz her sayfa için bir Direct2D komut listesi hazırlamanız ve ardından bu komut listesini Direct2D yazdırma denetimine geçirmeniz gerekir. Bu Direct2D komut listesini hazırlamak için, geçerli cihaz bağlamının çizim hedefi olarak bir komut listesi oluşturup ayarlamanız ve ardından görüntü için bit eşlem hedefine çizim yaptığınız gibi bu cihaz bağlamı üzerine çizim yapmanız yeterlidir. Cihazlar ve hedefler hakkında daha fazla bilgi için bkz. Cihazlar ve Cihaz Bağlamları.
Buradaki diyagramda uygulama, cihaz bağlamı, bit eşlem hedefi, komut listesi hedefi ve yazdırma denetimi arasındaki etkileşim gösterilmektedir.
Not
Direct2D uygulamalarından tamamen gizlendiklerinden Windows Print Sub-System ve Yazıcı bileşenleri gri renktedir.
Komut listesinin ve yazdırmanın bir uygulama ve direct2d ile nasıl etkileşim kurduğunu gösteren bir diyagram
Örnek
Direct2D içeriğini yazdırma işleminin tamamı aşağıdaki adımları içerir.
- Yazdırma işini başlatmak için bir yazdırma denetimi oluşturun.
- Komut listesini geçirerek yazdırma denetimine sayfa ekleyin.
- Belgenin geri kalanındaki her sayfa için 2. adımı yineleyin
- Yazdırma işini tamamlamak için yazdırma denetimini kapatın.
burada işlemi gösteren bir kod örneği verilmiştir.
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();