zoukankan      html  css  js  c++  java
  • MFC载入JPG图片

    ##

    1.定义画图函数

    HRESULT CIPCamDlg::draw(char *lpImageFile, HWND hWnd, int nScrWidth, int nScrHeight)
    {
        HDC hDC_Temp=::GetDC(hWnd);
        
        IPicture *pPic; 
        IStream *pStm;
        
        BOOL bResult;
        
        HANDLE hFile=NULL; 
        DWORD dwFileSize,dwByteRead;
            
        hFile=CreateFile(lpImageFile,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);//打开硬盘中的图形文件
        
        if (hFile!=INVALID_HANDLE_VALUE) 
        { 
            dwFileSize=GetFileSize(hFile,NULL);//获取文件字节数
            
            if (dwFileSize==0xFFFFFFFF) 
                return E_FAIL; 
        } 
        else 
        { 
            return E_FAIL; 
        }
        
        HGLOBAL hGlobal = GlobalAlloc(GMEM_MOVEABLE, dwFileSize);//分配全局存储空间  
        LPVOID pvData = NULL;
        
        if (hGlobal == NULL) 
        {
            AfxMessageBox("图形文件分配出错.");
            return E_FAIL; 
        }
        
        if ((pvData = GlobalLock(hGlobal)) == NULL)//锁定分配内存块 
        {
            AfxMessageBox("内存块锁定出问题");
            return E_FAIL;
        }
        
        ReadFile(hFile,pvData,dwFileSize,&dwByteRead,NULL);//把文件读入内存缓冲区
        
        GlobalUnlock(hGlobal);
        
        if(CreateStreamOnHGlobal(hGlobal, TRUE, &pStm) != S_OK)
        {
            AfxMessageBox("流初始化失败");
            return E_FAIL; 
        }
        
        bResult=OleLoadPicture(pStm,dwFileSize,TRUE,IID_IPicture,(LPVOID*)&pPic);//装入图形文件    
        if(FAILED(bResult)) 
        {
            AfxMessageBox("图形文件装载出错.");
            return E_FAIL; 
        }
        
        OLE_XSIZE_HIMETRIC hmWidth;//图片的真实宽度 
        OLE_YSIZE_HIMETRIC hmHeight;//图片的真实高度 
        pPic->get_Width(&hmWidth); 
        pPic->get_Height(&hmHeight);
        
        //char str[20]={''};
              
        bResult=pPic->Render(hDC_Temp,0,0,nScrWidth,nScrHeight,0,hmHeight,hmWidth,-hmHeight,NULL);//将图形输出到屏幕上
        
        CloseHandle(hFile);//关闭打开的文件
        
        pPic->Release(); 
        
        GlobalFree(hGlobal);// Free memory.    
        if (SUCCEEDED(bResult)) 
        { 
            return S_OK; 
        } 
        else 
        { 
            AfxMessageBox("图形文件装载出错.");
            return E_FAIL; 
        } 
    }

    2.调用

    HWND m_hWnd;
    GetDlgItem(IDC_STATIC_VIEW,&m_hWnd); //IDC_STATIC_VIEW是picture控件(不用做任何修改)
    draw("D://a.jpg",m_hWnd,宽度,高度);
  • 相关阅读:
    Vue框架构造
    JavaScript-改变this指向
    前端发展史
    python篇第10天【For 循环语句】
    python篇第10天【While 循环语句】
    python篇第8天【运算符】
    python篇第6天【数据类型】
    python篇第5天【变量】
    Python篇函数总结【输出函数】
    python篇第3天【编码规范】
  • 原文地址:https://www.cnblogs.com/tinaluo/p/7356559.html
Copyright © 2011-2022 走看看