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

baidu_16797803 2014-07-02 10:44:13
我现在把文件夹里的图片路径都存放在了vector<CString>中,
现在要把图片显示在picture控件上,要怎么做。
...全文
199 点赞 收藏 9
写回复
9 条回复
叶恭介1989 2014年08月05日
写出继承CStatic类的新类,重写绘制函数OnPaint,绑定新类到picture控件..采用GDI+来绘制图片,因为GDI+支持图片格式多
回复 点赞
向立天 2014年08月05日
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
回复 点赞
xingpacer 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)转一下)
回复 点赞
发动态
发帖子
界面
创建于2007-09-28

7973

社区成员

11.5w+

社区内容

VC/MFC 界面
社区公告
暂无公告