本站首页    管理页面    写新日志    退出


«January 2026»
123
45678910
11121314151617
18192021222324
25262728293031


公告
暂无公告...

我的分类(专题)

日志更新

最新评论

留言板

链接


Blog信息
blog名称:
日志总数:21
评论数量:94
留言数量:1
访问次数:145998
建立时间:2006年1月9日




[Visual C++](二)VC界面显示图片(JPG JPEG GIF)
原创空间,  文章收藏,  软件技术

joinclear 发表于 2006/5/13 18:04:27

转载自: http://www.vclife.net/articles/article_view.asp?atlid=7 简述实现步骤如下: 1、通过点击浏览按钮选择JPG图像文件点击浏览按钮打开文件对话框选择JPG图像文件,得到文件所在的路径目录。关键代码如下:char szFilter[] = "JPG Files (*.jpg)|*.jpg|JPEG Files (*.jpeg)|*.jpeg|GIF Files (*.gif)|*.gif|All Files (*.*)|*.*||";CFileDialog dlg(TRUE,"jpg|jpeg|gif",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,szFilter);if(dlg.DoModal() == IDOK){CString strPathName = dlg.GetPathName();                } 2、加载JPG文件到内存主要通过COM类—IPicture实现。关键代码如下:BOOL CShowJPGDlg::LoadJPGFile(const char *pPathname){    CFile file;    if( !file.Open( pPathname, CFile::modeRead) )        return FALSE;     DWORD    m_nFileLen;    m_nFileLen = file.GetLength();     HGLOBAL hMem = ::GlobalAlloc( GMEM_MOVEABLE, m_nFileLen );    LPVOID lpBuf = ::GlobalLock( hMem );    if( file.ReadHuge( lpBuf, m_nFileLen ) != m_nFileLen )        return FALSE;    file.Close();     ::GlobalUnlock( hMem );     if ( CreateStreamOnHGlobal( hMem, TRUE, &pStream ) !=S_OK )             return FALSE;        if ( OleLoadPicture( pStream, m_nFileLen, TRUE, IID_IPicture, ( LPVOID * )&pPicture ) !=S_OK )        return FALSE;        return TRUE;} 3、在屏幕上显示JPG图像主要通过Render函数实现显示JPG图像。Render函数说明HRESULT Render( HDC hdc,            //设备环境句柄             long x,            //在hdc上的水平坐标             long y,            //在hdc上的垂直坐标             long cx,            //图像宽度             long cy,            //图像高度             OLE_XPOS_HIMETRIC xSrc,    //在源图像上的水平偏移             OLE_YPOS_HIMETRIC ySrc,    //在源图像上的垂直偏移             OLE_XSIZE_HIMETRIC cxSrc,    //在源图像上水平拷贝的数量             OLE_YSIZE_HIMETRIC cySrc,    //在源图像上垂直拷贝的数量             LPCRECT prcWBounds        //指向目标图元设备环境句柄的指针             );关键代码如下:void CShowJPGDlg::DrawImage(int x, int y, CDC *pDC){            if (pPicture != NULL)     {        long nWidth,nHeight;         pPicture->get_Width( &nWidth );         pPicture->get_Height( &nHeight );             /*        //图片原大显示            CSize sz( nWidth, nHeight );            pDC->HIMETRICtoDP( &sz );            pPicture->Render(pDC->m_hDC,0,0,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);    */                        //按窗口尺寸显示        CRect rect;        GetClientRect(&rect);        pPicture->Render(pDC->m_hDC,x,y,rect.Width(),rect.Height(),0,nHeight,nWidth,-nHeight,NULL);    }} 注意:由于是主要通过COM类—IPicture实现的,不要忘记了CoInitialize(NULL);,用完了CoUninitialize();。显示JPEG、GIF和JPG是一样的。相比较BMP图像,JPG、JPEG、GIF图像有很多优点。但BMP图像在VC中的处理好像更理所当然一点,相信这种COM实现显示JPG、JPEG、GIF图像的处理让我们更是耳目一新。 具体的程序请参考附带的例子,例子里面有详细的注释。  


阅读全文(12042) | 回复(4) | 编辑 | 精华
 


回复:(二)VC界面显示图片(JPG JPEG GIF)
原创空间,  文章收藏,  软件技术

hnjk(游客)发表评论于2010/11/24 21:03:18

errf


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:(二)VC界面显示图片(JPG JPEG GIF)
原创空间,  文章收藏,  软件技术

图片(游客)发表评论于2006/10/11 21:31:47

 买3砖1会员 永久

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:(二)VC界面显示图片(JPG JPEG GIF)
原创空间,  文章收藏,  软件技术

adong(游客)发表评论于2006/7/28 11:04:16

 怎样才能不通过点击浏览按钮选择JPG图像文件而可以在程序中指定路径后程序运行后可以直接在屏幕上显示出图象?我邮箱qinshandongrena@163.com ,谢了!!!!

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


回复:(二)VC界面显示图片(JPG JPEG GIF)
原创空间,  文章收藏,  软件技术

dragon527(游客)发表评论于2006/7/25 9:43:28

请问:    要是用VC的Win32 Application,即完全用Windows程序,怎样实现同样的功能:将当前目录下的jpg/bmp/gif图片加载到窗口显示?

个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.484 second(s), page refreshed 144809014 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号