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);
//释放设备上下文环境(DC)
ReleaseDC(&dc);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了