调用系统API打印图片文字
{
LPCTSTR filename=_T("D:\\1.bmp");
CPrintDialog printDlg(FALSE);
printDlg.GetDefaults();
// Or get from user:
// if (printDlg.DoModal() == IDCANCEL)
// return;
CDC dc;
if (!dc.Attach(printDlg.GetPrinterDC())) {
AfxMessageBox(_T("No printer founhh nn nd!")); return;
}
HFONT hFont,hOldFont;
hFont = CreateFont(36,18, 0, 0,FW_NORMAL,FALSE,FALSE, FALSE,GB2312_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,_T("黑体"));
hOldFont = (HFONT)SelectObject(dc,hFont);
dc.m_bPrinting = TRUE;
DOCINFO di;
// Initialise print document details
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = filename;
BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job
// Get the printing extents
// and store in the m_rectDraw field of a
// CPrintInfo object
CPrintInfo Info;
Info.SetMaxPage(1); // just one page
int maxw = dc.GetDeviceCaps(HORZRES);
int maxh = dc.GetDeviceCaps(VERTRES);
Info.m_rectDraw.SetRect(0, 0, maxw, maxh);
for (UINT page = Info.GetMinPage(); page <=
Info.GetMaxPage() && bPrintingOK; page++) {
dc.StartPage(); // begin new page
Info.m_nCurPage = page;
CBitmap bitmap;
if(!bitmap.Attach(::LoadImage(
::GetModuleHandle(NULL), filename, IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE))) {
AfxMessageBox(_T("Error loading bitmap!")); return;
}
BITMAP bm;
bitmap.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
// create memory device context
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pBmp = memDC.SelectObject(&bitmap);
memDC.SetMapMode(dc.GetMapMode());
dc.SetStretchBltMode(HALFTONE);
// now stretchblt to maximum width on page
dc.StretchBlt(15,20, 300, 110, &memDC, 0, 0, w, h, SRCCOPY);
//textout
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0,0,0));
HGDIOBJ hOldPen = SelectObject(dc,hPen);
CStringW text;
text ="资源编码";
TextOut(dc,15,144+80,text,text.GetLength());
text="设计单位";
TextOut(dc,15,210+80,text,text.GetLength());
text="施工单位";
TextOut(dc,15,276+80,text,text.GetLength());
text="验收单位";
TextOut(dc,15,342+80,text,text.GetLength());
text="竣工日期";
TextOut(dc,15,408+80,text,text.GetLength());
//Line
MoveToEx(dc,160,180+80,NULL);
LineTo(dc,516,180+80);
MoveToEx(dc,160,246+80,NULL);
LineTo(dc,516,246+80);
MoveToEx(dc,160,312+80,NULL);
LineTo(dc,516,312+80);
MoveToEx(dc,160,378+80,NULL);
LineTo(dc,516,378+80);
MoveToEx(dc,160,444+80,NULL);
LineTo(dc,516,444+80);
SelectObject(dc,hOldPen);
DeleteObject(hPen);
// clean up
memDC.SelectObject(pBmp);
bPrintingOK = (dc.EndPage() > 0); // end page
}
if (bPrintingOK)
dc.EndDoc(); // end a print job
else dc.AbortDoc(); // abort job.
}
LPCTSTR filename=_T("D:\\1.bmp");
CPrintDialog printDlg(FALSE);
printDlg.GetDefaults();
// Or get from user:
// if (printDlg.DoModal() == IDCANCEL)
// return;
CDC dc;
if (!dc.Attach(printDlg.GetPrinterDC())) {
AfxMessageBox(_T("No printer founhh nn nd!")); return;
}
HFONT hFont,hOldFont;
hFont = CreateFont(36,18, 0, 0,FW_NORMAL,FALSE,FALSE, FALSE,GB2312_CHARSET, OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS,DEFAULT_QUALITY,DEFAULT_PITCH|FF_MODERN,_T("黑体"));
hOldFont = (HFONT)SelectObject(dc,hFont);
dc.m_bPrinting = TRUE;
DOCINFO di;
// Initialise print document details
::ZeroMemory (&di, sizeof (DOCINFO));
di.cbSize = sizeof (DOCINFO);
di.lpszDocName = filename;
BOOL bPrintingOK = dc.StartDoc(&di); // Begin a new print job
// Get the printing extents
// and store in the m_rectDraw field of a
// CPrintInfo object
CPrintInfo Info;
Info.SetMaxPage(1); // just one page
int maxw = dc.GetDeviceCaps(HORZRES);
int maxh = dc.GetDeviceCaps(VERTRES);
Info.m_rectDraw.SetRect(0, 0, maxw, maxh);
for (UINT page = Info.GetMinPage(); page <=
Info.GetMaxPage() && bPrintingOK; page++) {
dc.StartPage(); // begin new page
Info.m_nCurPage = page;
CBitmap bitmap;
if(!bitmap.Attach(::LoadImage(
::GetModuleHandle(NULL), filename, IMAGE_BITMAP, 0, 0,
LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_DEFAULTSIZE))) {
AfxMessageBox(_T("Error loading bitmap!")); return;
}
BITMAP bm;
bitmap.GetBitmap(&bm);
int w = bm.bmWidth;
int h = bm.bmHeight;
// create memory device context
CDC memDC;
memDC.CreateCompatibleDC(&dc);
CBitmap *pBmp = memDC.SelectObject(&bitmap);
memDC.SetMapMode(dc.GetMapMode());
dc.SetStretchBltMode(HALFTONE);
// now stretchblt to maximum width on page
dc.StretchBlt(15,20, 300, 110, &memDC, 0, 0, w, h, SRCCOPY);
//textout
HPEN hPen = CreatePen(PS_SOLID, 3, RGB(0,0,0));
HGDIOBJ hOldPen = SelectObject(dc,hPen);
CStringW text;
text ="资源编码";
TextOut(dc,15,144+80,text,text.GetLength());
text="设计单位";
TextOut(dc,15,210+80,text,text.GetLength());
text="施工单位";
TextOut(dc,15,276+80,text,text.GetLength());
text="验收单位";
TextOut(dc,15,342+80,text,text.GetLength());
text="竣工日期";
TextOut(dc,15,408+80,text,text.GetLength());
//Line
MoveToEx(dc,160,180+80,NULL);
LineTo(dc,516,180+80);
MoveToEx(dc,160,246+80,NULL);
LineTo(dc,516,246+80);
MoveToEx(dc,160,312+80,NULL);
LineTo(dc,516,312+80);
MoveToEx(dc,160,378+80,NULL);
LineTo(dc,516,378+80);
MoveToEx(dc,160,444+80,NULL);
LineTo(dc,516,444+80);
SelectObject(dc,hOldPen);
DeleteObject(hPen);
// clean up
memDC.SelectObject(pBmp);
bPrintingOK = (dc.EndPage() > 0); // end page
}
if (bPrintingOK)
dc.EndDoc(); // end a print job
else dc.AbortDoc(); // abort job.
}