参考文章:
MFC图像处理CImage类常用代码
一、通过资源ID的方式加载图片
图片资源文件为BMP,通过BMP资源ID获取bitmap
| void CCTDlg::draw() |
| { |
| CBitmap bitmap; |
| bitmap.LoadBitmapW(IDB_BITMAP1); |
| CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); |
| pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); |
| pStatic->SetBitmap((HBITMAP)bitmap); |
| } |
二、通过文件路径的方式加载图片
bmp文件
通过bmp文件路径加载图片,loadImage()函数可改变图片大小。
| void CCTDlg::draw() |
| { |
| HBITMAP bitmap = (HBITMAP)::LoadImage(AfxGetInstanceHandle(), |
| TEXT(".\\res\\1.bmp"), |
| IMAGE_BITMAP, |
| 600, |
| 200, |
| LR_DEFAULTCOLOR | LR_LOADFROMFILE | LR_CREATEDIBSECTION); |
| CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); |
| pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); |
| pStatic->SetBitmap((HBITMAP)bitmap); |
| } |
其他格式文件
其他格式的文件要先转换成bmp,也可用于bmp文件
| void CCTDlg::draw() |
| { |
| CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); |
| CImage image; |
| image.Load(TEXT(".\\res\\yyl.png")); |
| HBITMAP bitmap = image.Detach(); |
| pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); |
| pStatic->SetBitmap(bitmap); |
| image.Destory(); |
| } |
三、调整大小显示图片
根据MFC控件大小CImage类实例图片显示
| void CCTDlg::draw() |
| { |
| CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); |
| CImage image; |
| image.Load(TEXT(".\\res\\1.bmp")); |
| CRect zcRect; |
| pStatic->GetClientRect(&zcRect); |
| image.Draw(pStatic->GetDC()->m_hDC, |
| zcRect.left, |
| zcRect.top, |
| zcRect.Width(), |
| zcRect.Height()); |
| image.Destroy(); |
| } |
根据CImage类实例的大小调整MFC控件
| void CCTDlg::draw() |
| { |
| CImage image; |
| image.Load(TEXT(".\\res\\2.jpg")); |
| |
| CStatic* pStatic = (CStatic *)GetDlgItem(IDC_STATIC_PHOTO); |
| pStatic->SetWindowPos(NULL, |
| 0, |
| 0, |
| image.GetWidth(), |
| image.GetHeight(), |
| SWP_NOMOVE); |
| pStatic->ModifyStyle(0xF, SS_BITMAP | SS_CENTERIMAGE); |
| pStatic->SetBitmap((HBITMAP)image.Detach()); |
| } |
四、清空图片
| void CCTDlg::clear() |
| { |
| CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_PHOTO); |
| pStatic->SetBitmap(NULL); |
| this->RedrawWindow(); |
| } |
五、释放空间
| image.Destroy(); |
| pStatic->ReleaseDC(Dc); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现