Итак, я пытаюсь напечатать одностраничный документ. Я в основном рисую текст и растровые изображения в формате bitting на растровом изображении размера страницы, а затем встраиваю растровое изображение THAT в DC
принтера
nPixWidth = 5100
и nPixHeight = 6600
, так как же растровое изображение 445 x 1092 занимает ВСЕ верхнюю часть страницы? Мол, какого черта? Что мне здесь не хватает?
Мне не нужно использовать GDI +. Я мог бы использовать DrawText
и BitBlt
или StretchBlt
, но я думал, что GDI + будет лучше.
int nPixWidth = GetDeviceCaps(m_hPrinterDC, PHYSICALWIDTH), nPixHeight = GetDeviceCaps(m_hPrinterDC, PHYSICALHEIGHT);
int nPixMarginWidth = GetDeviceCaps(m_hPrinterDC, PHYSICALOFFSETX), nPixMarginHeight = GetDeviceCaps(m_hPrinterDC, PHYSICALOFFSETY);
// int nDPI = nPixHeight / GetDeviceCaps(m_hPrinterDC, )
Bitmap myBitmap(nPixWidth - nPixMarginWidth, nPixHeight - nPixMarginHeight, PixelFormat32bppARGB);
HBITMAP hLogoBmp = (HBITMAP)LoadImage(AfxGetInstanceHandle(), MAKEINTRESOURCE(IDB_BITMAP_THELOGO_HORZ), IMAGE_BITMAP, 0, 0, 0); // 445 x 1092
GetPaperDimensions(m_cReportOptions.m_devMode.dmPaperSize, m_fPageWidth, m_fPageHeight);
Graphics printer(m_hPrinterDC);
Graphics page(&myBitmap);
Bitmap *pBmpLogo = Bitmap::FromHBITMAP(hLogoBmp, NULL);
int nLogoWidth = pBmpLogo->GetWidth(), nLogoHeight = pBmpLogo->GetHeight();
SolidBrush whiteBrush(Color(255, 255, 255));
page.FillRectangle(&whiteBrush, 0, 0, nPixWidth - nPixMarginWidth, nPixHeight - nPixMarginHeight);
page.DrawImage(pBmpLogo, 0, 0, nLogoWidth, nLogoHeight);
printer.DrawImage(&myBitmap, 0, 0); // , (INT)nPixWidth, (INT)nPixHeight);
DeleteObject(hLogoBmp);
delete pBmpLogo;