vc 如何显示jpg图片

ppypyb 2009-04-19 11:59:10
在vc中是不是只能显示bmp的位图文件啊,不象delphi中有image控件。我只知道如何显示bmp图像,请大家帮帮我怎么在对话框显示jpg图片
...全文
159 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
在他乡奋斗 2009-04-19
  • 打赏
  • 举报
回复
VC中当然可以显示各种格式的文件。要显示JPG的文件可以用OLE对象。具体代码如下:
(你把以下代码考到一个函数中就行)
CFileDialog m_dlg(TRUE,"JPG",NULL,NULL,"JPG(*.jpg)|*.JPG|gif|*.gif",this);
if (m_dlg.DoModal()==IDOK)
{
CString m_filename =m_dlg.GetPathName();

m_dir.SetWindowText(m_filename);

CFile m_file(m_filename,CFile::modeRead );

//获取文件长度
DWORD m_filelen = m_file.GetLength();

//在堆上分配空间
HGLOBAL m_hglobal = GlobalAlloc(GMEM_MOVEABLE,m_filelen);

LPVOID pvdata = NULL;
//锁定堆空间,获取指向堆空间的指针
pvdata = GlobalLock(m_hglobal);

//将文件数据读区到堆中
m_file.ReadHuge(pvdata,m_filelen);

IStream* m_stream;

GlobalUnlock(m_hglobal);

//在堆中创建流对象
CreateStreamOnHGlobal(m_hglobal,TRUE,&m_stream);

//利用流加载图像
OleLoadPicture(m_stream,m_filelen,TRUE,IID_IPicture,(LPVOID*)&m_picture);

m_picture->get_Width(&m_width);
m_picture->get_Height(&m_height);

CDC* dc = GetDC();

m_IsShow = TRUE;
CRect rect;
GetClientRect(rect);
SetScrollRange(SB_VERT,0,(int)(m_height/26.45)-rect.Height());
SetScrollRange(SB_HORZ,0,(int)(m_width/26.45)-rect.Width());

m_picture->Render(*dc,1,50,(int)(m_width/26.45),(int)(m_height/26.45),0,m_height,m_width,-m_height,NULL);
wutaihua 2009-04-19
  • 打赏
  • 举报
回复
VS2008有个CImage类,可以直接添加Image图片。

楼主,你看这个链接,有详细的介绍和实现的代码
http://hi.baidu.com/cjmxp/blog/item/0ac2b73ed41c06f2828b132f.html

19,464

社区成员

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

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