其他分享
首页 > 其他分享> > mfc 位图本地存储 本地位图读取显示

mfc 位图本地存储 本地位图读取显示

作者:互联网

一、读取CImage

    //在绘图函数中直接使用参数pDC,无需定义
        CDC* pDC = GetDC();
        //读去位图路径,根据实际情况修改
        CString loatImagePath = TEXT("./res/drawing.png");
        CRect imageRect; 
    CImage  image;  
    //根据路径载入图片  
    HRESULT hresult  = image.Load(loatImagePath);
    //图片不存在,结束读取
        if(E_FAIL==hresult)
    {
        //MessageBox(_T(" Image Load  failed!"));
        return;
    }
    imageRect.SetRect(0,0 ,image.GetWidth() , image.GetHeight()); 

    // 只能为英文路径,否则报错。
    //将图片画到Picture控件表示的矩形区域 
    image.Draw(pDC->m_hDC, imageRect);     

二、保存文件绘制显示内容

     //将存取this指向的CWnd的客户区
     CClientDC dc(this);    
    CRect rect; 
 
     //获取工作区大小(画布)
     GetClientRect(&rect);                 

    //创建兼容位图
    HBITMAP hBitmap = CreateCompatibleBitmap(*dc, rect.Width(), rect.Height());     

    //创建兼容DC    产生与dc指定设备兼容的设备上下文内存
    HDC hdc = CreateCompatibleDC(*dc);      

    //将位图选入DC,并保存返回值 
    HBITMAP hOldMap = (HBITMAP)SelectObject(hdc,hBitmap); 

    //将屏幕DC(dc)的图像复制到内存DC(hdc)中
    BitBlt(hdc,0,0,rect.Width(),rect.Height(),*dc,0,0,SRCCOPY); 


    CImage  image;
    //将位图转化为一般图像 将hBitmap附加到对象image
    image.Attach(hBitmap);                


    //保存图像,返回执行状况
    HRESULT hResult = image.Save(saveImagePath);    

    //从CImage对象分离位图。
    image.Detach();

    //复原兼容DC数据
    SelectObject(hdc,hOldMap);

 

标签:存储,mfc,读取,image,dc,DC,hdc,hBitmap,rect
来源: https://www.cnblogs.com/yyd-sun/p/14066846.html