zoukankan      html  css  js  c++  java
  • 读取图片并打印图片

    void PrintBitmap(LPCTSTR filename) {
     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 found!")); return;
     } 
     
     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;
      // LoadImage does the trick here, it creates a DIB section
      // You can also use a resource here
      // by using MAKEINTRESOURCE() ... etc. 
      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(0, 0, maxw, maxh, &memDC, 0, 0, w, h, SRCCOPY); 
       // clean up
       memDC.SelectObject(pBmp);
       bPrintingOK = (dc.EndPage() > 0);   // end page
     } 
     if (bPrintingOK)
       dc.EndDoc(); // end a print job
     else dc.AbortDoc();           // abort job. 
    }

    http://blog.csdn.net/kingmax54212008/article/details/77141553
  • 相关阅读:
    Git&GitHUP总结
    SpringBoot 与任务
    SpringBoot中Scheme的使用
    SpringBoot的错误处理机制
    thymeleaf公共页面元素抽取
    redis 配置文件介绍 redis.conf
    SpringBoot如何实现国际化
    AttributeError: 'str' object has no attribute 'lowerr' Python常见错误
    TypeError: 'list' object cannot be interpreted as an integer Python常见错误
    TypeError: myMethod() takes no arguments (1 given) Python常见错误
  • 原文地址:https://www.cnblogs.com/dengpeng1004/p/7448666.html
Copyright © 2011-2022 走看看