以下是使用 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
函数将图片绘制到打印纸上,并完成打印任务。
注意:以上代码仅为示例,实际应用中可能需要根据具体需求进行适当的修改。