작성한 보고서 컨트롤에 대해 CDC를 인쇄하면 용지에 1 제곱 인치 미만의 작은 크기로 나타납니다. 전체 페이지를 차지하도록 보고서를 인쇄하려면 어떻게해야합니까? 다른 말로하면 전체 보고서를 인쇄 된 한 페이지에 표시하는 방법은 무엇입니까? 인쇄 된 CDC가 용지에 매우 작게 표시됩니다.
CPrintDialog printDialog(FALSE); printDialog.DoModal();
CDC dcPrint;
if(dcPrint.Attach(printDialog.GetPrinterDC()))
{
int iHorzRes = dcPrint.GetDeviceCaps(HORZRES);
int iVertRes = dcPrint.GetDeviceCaps(VERTRES);
int iHorzResCDC = m_CDC.GetDeviceCaps(HORZRES);
int iVertResCDC = m_CDC.GetDeviceCaps(VERTRES);
dcPrint.m_bPrinting = TRUE;
dcPrint.BitBlt(0,0, iHorzRes, iVertRes, &m_CDC, iHorzResCDC, iVertResCDC, SRCCOPY);
CFont* pOldFont = dcPrint.SelectObject(&m_HeaderFont);
dcPrint.TextOut(0,0,"HelloWorld") ;
dcPrint.SelectObject(pOldFont);
CPrintInfo printInfo;
printInfo.m_rectDraw.SetRect(0,0, iHorzRes, iVertRes);
dcPrint.StartDoc("Report Print");
dcPrint.StartPage();
if(dcPrint.EndPage())
dcPrint.EndDoc();
else
dcPrint.AbortDoc();
}
dcPrint.DeleteDC();
m_CDC
제가 버퍼 화면 전체 보고서를 표시하기 위해 사용하는 메모리 DC이다.
이 작품은 작은 외관에 대한 이유는 인쇄 직류가 화면 DC보다 더 많은 픽셀을 가지고 있다는 것입니다. 이 때문에 모든 글꼴 크기가 인쇄시 작게 나타납니다. 따라서 필자는 인쇄용 DC를 통과하는 새로운 글꼴 크기를 사용하여 인쇄 할 드로잉 논리를 작성했습니다. 이렇게하면 전체 페이지가 거의 필요했습니다. 고맙습니다. –
큰 글꼴을 사용하는 것은 사실 더 큰 그림을 그리는 올바른 방법이 아닙니다. 올바른 방법은 DC에 적합한 매핑 모드와 뷰포트를 설정하는 것입니다. CDC :: SetMapMode() 및 :: SetWindowExtEx() 함수를 살펴보십시오. –