怎么通过路径把bmp、jpg、gif等格式的图片在picture控件上显示出来

baidu_16797803 2014-07-02 10:44:13
我现在把文件夹里的图片路径都存放在了vector<CString>中,
现在要把图片显示在picture控件上,要怎么做。
...全文
273 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶恭介叶恭介 2014-08-05
  • 打赏
  • 举报
回复
写出继承CStatic类的新类,重写绘制函数OnPaint,绑定新类到picture控件..采用GDI+来绘制图片,因为GDI+支持图片格式多
向立天 2014-08-05
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
dvlinker 2014-07-05
  • 打赏
  • 举报
回复
CPicture控件好像只支持bmp格式图片,如果包含要支持jpg和png,可能不能用CPicture控件,要不就是继承CPicture控件,进行自绘 其实还是建议使用CImage类将图片绘制到指定区域,如果不同尺寸的图片,可以通过代码做到等比例缩放,不失真
rxguoblp 2014-07-02
  • 打赏
  • 举报
回复
引用 5 楼 lx624909677 的回复:
[quote=引用 4 楼 rxguoblp 的回复:] [quote=引用 2 楼 lx624909677 的回复:]
		CWnd* pWnd;
		pWnd=GetDlgItem(IDC_IMAGE1);
		CDC* pDC=pWnd->GetDC();
		HDC hDC = pDC->m_hDC;

		CRect rect_frame;
		pWnd->GetClientRect(&rect_frame);
		image1.Load(fileName);
		::SetStretchBltMode(hDC,HALFTONE);
		::SetBrushOrgEx(hDC,0,0,NULL);

		image1.Draw(hDC,rect_frame);
		ReleaseDC(pDC);//释放picture控件的DC
其中image1是Cimage类的一个对象,IDC_IMAGE1是你的控件的ID
还要在末尾加上一句: image.Destroy();[/quote] 这里的image对象不是在栈上创建的吗?为什么还要手动释放?[/quote] 你说的有道理,我指的是如果把image1作为一个对话框类成员变量的话需要加上image.Destroy()。如果是在函数内部栈上创建的临时变量,那就不需要添加,但是这样程序的效率会降低。
lx624909677 2014-07-02
  • 打赏
  • 举报
回复
引用 4 楼 rxguoblp 的回复:
[quote=引用 2 楼 lx624909677 的回复:]
		CWnd* pWnd;
		pWnd=GetDlgItem(IDC_IMAGE1);
		CDC* pDC=pWnd->GetDC();
		HDC hDC = pDC->m_hDC;

		CRect rect_frame;
		pWnd->GetClientRect(&rect_frame);
		image1.Load(fileName);
		::SetStretchBltMode(hDC,HALFTONE);
		::SetBrushOrgEx(hDC,0,0,NULL);

		image1.Draw(hDC,rect_frame);
		ReleaseDC(pDC);//释放picture控件的DC
其中image1是Cimage类的一个对象,IDC_IMAGE1是你的控件的ID
还要在末尾加上一句: image.Destroy();[/quote] 这里的image对象不是在栈上创建的吗?为什么还要手动释放?
rxguoblp 2014-07-02
  • 打赏
  • 举报
回复
引用 2 楼 lx624909677 的回复:
		CWnd* pWnd;
		pWnd=GetDlgItem(IDC_IMAGE1);
		CDC* pDC=pWnd->GetDC();
		HDC hDC = pDC->m_hDC;

		CRect rect_frame;
		pWnd->GetClientRect(&rect_frame);
		image1.Load(fileName);
		::SetStretchBltMode(hDC,HALFTONE);
		::SetBrushOrgEx(hDC,0,0,NULL);

		image1.Draw(hDC,rect_frame);
		ReleaseDC(pDC);//释放picture控件的DC
其中image1是Cimage类的一个对象,IDC_IMAGE1是你的控件的ID
还要在末尾加上一句: image.Destroy();
lx624909677 2014-07-02
  • 打赏
  • 举报
回复
fileName就是你那个数组中的路径中的任意一个
lx624909677 2014-07-02
  • 打赏
  • 举报
回复
		CWnd* pWnd;
		pWnd=GetDlgItem(IDC_IMAGE1);
		CDC* pDC=pWnd->GetDC();
		HDC hDC = pDC->m_hDC;

		CRect rect_frame;
		pWnd->GetClientRect(&rect_frame);
		image1.Load(fileName);


		::SetStretchBltMode(hDC,HALFTONE);
		::SetBrushOrgEx(hDC,0,0,NULL);

		image1.Draw(hDC,rect_frame);
		ReleaseDC(pDC);//释放picture控件的DC
其中image1是Cimage类的一个对象,IDC_IMAGE1是你的控件的ID
信阳毛尖 2014-07-02
  • 打赏
  • 举报
回复
::LoadImage函数的第二个参数,可以是路径,也可以是ID(需要MAKEINTRESOURCE(ID)转一下)

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧