以下是使用 MFC 打印圖片的代碼示例:
void CMyView::OnPrint(CDC* pDC, CPrintInfo* pInfo)
{
CPrintDialog printDlg(FALSE);
if (printDlg.DoModal() == IDOK)
{
CDC dcPrint;
dcPrint.Attach(printDlg.GetPrinterDC());
// 獲取打印機的設備上下文
DOCINFO di;
memset(&di, 0, sizeof(DOCINFO));
di.cbSize = sizeof(DOCINFO);
di.lpszDocName = _T("Print Image");
dcPrint.StartDoc(&di);
// 獲取圖片文件路徑
CString strImagePath = _T("C:\\path\\to\\your\\image.jpg");
// 加載圖片
CImage image;
image.Load(strImagePath);
// 獲取圖片的大小
int nImageWidth = image.GetWidth();
int nImageHeight = image.GetHeight();
// 獲取打印設備的分辨率
int nPrintWidth = dcPrint.GetDeviceCaps(HORZRES);
int nPrintHeight = dcPrint.GetDeviceCaps(VERTRES);
// 計算圖片在打印紙上的位置和大小
int nPrintImageWidth, nPrintImageHeight;
if (nImageWidth > nPrintWidth)
{
nPrintImageWidth = nPrintWidth;
nPrintImageHeight = nImageHeight * nPrintWidth / nImageWidth;
}
else
{
nPrintImageWidth = nImageWidth;
nPrintImageHeight = nImageHeight;
}
int nPrintImageX = (nPrintWidth - nPrintImageWidth) / 2;
int nPrintImageY = (nPrintHeight - nPrintImageHeight) / 2;
// 縮放打印紙上的圖片大小
image.StretchBlt(dcPrint.m_hDC, nPrintImageX, nPrintImageY, nPrintImageWidth, nPrintImageHeight, SRCCOPY);
dcPrint.EndDoc();
dcPrint.Detach();
}
}
以上代碼是在 MFC 的 CView
類中的 OnPrint
函數中實現的。在打印對話框中選擇打印機后,代碼會將打印機的設備上下文附加到 dcPrint
對象上,并創建一個 DOCINFO
結構來啟動打印任務。然后,代碼加載指定的圖片并計算圖片在打印紙上的位置和大小。最后,代碼使用 StretchBlt
函數將圖片繪制到打印紙上,并完成打印任務。
注意:以上代碼僅為示例,實際應用中可能需要根據具體需求進行適當的修改。