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]={'\0'};
          
    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,宽度,高度);

 

转载于:https://www.cnblogs.com/tinaluo/p/7356559.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值