인쇄 및 명령 목록
Direct2D 인쇄 컨트롤은 Windows 8의 Direct2D 모듈에 있는 새로운 구성 요소입니다. 이 구성 요소를 사용하면 Direct2D 앱이 Direct2D 그리기 호출(상태 변경 및 기본 형식 다시 설정)을 다시 사용하여 화면에 표시되는 것과 유사한 인쇄 결과를 제공할 수 있습니다.
ID2D1PrintControl 인터페이스는 가상 인쇄 작업을 나타냅니다. Direct2D 인쇄 컨트롤을 만들어 새 인쇄 작업을 시작하고 인쇄하려는 각 페이지에 대해 Direct2D 콘텐츠를 전달한 다음 인쇄 컨트롤을 닫아 인쇄 작업을 완료할 수 있습니다.
참고 항목
인쇄 컨트롤은 하나와 정확히 하나의 인쇄 작업에 매핑되며 다시 사용할 수 없습니다.
Direct2D 인쇄 컨트롤은 실제 프린터와 함께 작동하여 실제 인쇄물을 전달하는 인쇄 하위 시스템에 대해 전달된 Direct2D 콘텐츠를 변환하고 최적화합니다. 모든 인쇄 관련 세부 정보는 Direct2D 앱에서 숨겨집니다. 즉, Direct2D 앱은 그리는 장치 또는 드로잉을 인쇄로 변환하는 방법을 모르고 인쇄할 수 있습니다.
Direct2D를 사용하여 인쇄하려면 인쇄할 각 페이지에 대해 하나의 Direct2D 명령 목록을 준비한 다음 해당 명령 목록을 Direct2D 인쇄 컨트롤에 전달해야 합니다. Direct2D 명령 목록을 준비하려면 명령 목록을 만들고 현재 디바이스 컨텍스트의 그리기 대상으로 설정한 다음, 표시를 위해 비트맵 대상에 그리는 것처럼 해당 디바이스 컨텍스트에 그리기만 하면 됩니다. 디바이스 및 대상에 대한 자세한 내용은 디바이스 및 디바이스 컨텍스트를 참조하세요.
여기서 다이어그램은 앱, 디바이스 컨텍스트, 비트맵 대상, 명령 목록 대상 및 인쇄 컨트롤 간의 상호 작용을 보여 줍니다.
참고 항목
Windows 인쇄 하위 시스템 및 프린터 구성 요소는 Direct2D 앱에서 완전히 숨겨져 있으므로 회색으로 표시됩니다.
예시
Direct2D 콘텐츠를 인쇄하는 전체 프로세스에는 다음 단계가 포함됩니다.
- 인쇄 작업을 시작하는 인쇄 컨트롤을 만듭니다.
- 명령 목록을 전달하여 인쇄 컨트롤에 페이지를 추가합니다.
- 문서의 나머지 부분에 있는 각 페이지에 대해 2단계 반복
- 인쇄 컨트롤을 닫아 인쇄 작업을 완료합니다.
프로세스를 보여 주는 코드 예제는 다음과 같습니다.
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();