简述实现步骤如下:
1、通过点击浏览按钮选择JPG图像文件
点击浏览按钮打开文件对话框选择JPG图像文件,得到文件所在的路径目录。
关键代码如下:
charszFilter[]="JPGFiles(*.jpg)|*.jpg|JPEGFiles(*.jpeg)|*.jpeg|GIFFiles(*.gif)|*.gif|AllFiles(*.*)|*.*||";
CFileDialogdlg(TRUE,"jpg|jpeg|gif",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter);
if(dlg.DoModal()==IDOK)
...{
CStringstrPathName=dlg.GetPathName();
}
2、加载JPG文件到内存
主要通过COM类—IPicture实现。
关键代码如下:
BOOLCShowJPGDlg::LoadJPGFile(constchar*pPathname)
...{
CFilefile;
if(!file.Open(pPathname,CFile::modeRead))
returnFALSE;
DWORDm_nFileLen;
m_nFileLen=file.GetLength();
HGLOBALhMem=::GlobalAlloc(GMEM_MOVEABLE,m_nFileLen);
LPVOIDlpBuf=::GlobalLock(hMem);
if(file.ReadHuge(lpBuf,m_nFileLen)!=m_nFileLen)
returnFALSE;
file.Close();
::GlobalUnlock(hMem);
if(CreateStreamOnHGlobal(hMem,TRUE,&pStream)!=S_OK)
returnFALSE;
if(OleLoadPicture(pStream,m_nFileLen,TRUE,IID_IPicture,(LPVOID*)&pPicture)!=S_OK)
returnFALSE;
returnTRUE;
}
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//指向目标图元设备环境句柄的指针
);
关键代码如下:
voidCShowJPGDlg::DrawImage(intx,inty,CDC*pDC)
...{
if(pPicture!=NULL)
...{
longnWidth,nHeight;
pPicture->get_Width(&nWidth);
pPicture->get_Height(&nHeight);
/**//*
//图片原大显示
CSizesz(nWidth,nHeight);
pDC->HIMETRICtoDP(&sz);
pPicture->Render(pDC->m_hDC,0,0,sz.cx,sz.cy,0,nHeight,nWidth,-nHeight,NULL);
*/
//按窗口尺寸显示
CRectrect;
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图像的处理让我们更是耳目一新。
分享到:
相关推荐
VC++ 下加载 JPG JPEG GIF PNG 图片最简单的方法
VC实现打开BMP JPG或GIF图片|VC/MFC/打开图片
在vc程序界面上显示JPG图片: vc上的PICTURE控件只能显示BMP类型的图片,要显示JPG图片必须另外处理, 对于三层结构的程序,用户可能要求客户端能显示业主头像,或者房屋照片 BMP形式显然数据量比较大, 本例子实现了一个...
VC下加载_JPG_JPEG__GIF_PNG_图片最简单的方法.txt
课程设计要求VC实现打开BMP JPG或GIF图片,是数字图像处理的基础。
在VC下显示JPEG、GIF格式图像的一种简便方法
做项目时写的测试程序,主要实现了vc对GIF图片的动态显示
在VC环境下显示图像,如bmp,jpeg,gif格式的图像
该程序能够在VC界面上显示jpg图片,效果比较好。
使用VC++编程,显示JPG图片,还可以进行比例放大缩小的操作
利用Delphi的代码在VC中显示JPG图片,不使用动态连接库
本工程已通过vc编译运行,实现bmp图片转化成jpeg图片,运用离散余弦、哈弗曼、量化等编码过程,代码详细,每一行都有详细的注释,适合对图像编码的学习和研究。 ……………… ………… typedef struct tagJPEGSOF0_...
VC界面显示图片。点击浏览按钮打开文件对话框选择BMP图像文件,得到文件所在的路径目录
VC界面显示GIF格式动态图片方法
vc 把BMP JPG GIF PNG 格式图片显示到PictureControl控件中。 带有实例工程vc2010下调试通过,共3中显示方式 显示png使用GDI+
VC 在MFC中调用显示JPG、GIF图像,在VC 的MFC中调用显示图片似乎没有在VB中那么轻松容易,针对这一问题,笔者自己写了一个测试程序,附上完整代码,看一看在VC 的MFC中,如果调用显示一张图片,并且可随窗口的大小...
动态显示jpg和gif,不可思议的简单,没有dll和lib,源代码实现,扩展性好,稍加修改即可使用,你值得拥有
在VC下显示JPEG、GIF格式图像的一种简便方法.doc 在VC下显示JPEG、GIF格式图像的一种简便方法.doc
在VC中透明浮动按键的实现,用VC设计托盘图标程序,图像平滑滚动效果的VC实现,利用钩子实现菜单阴影效果,在VC下显示JPEG、GIF格式图像的一种简便方法,制作 MSN、QQ 的消息提示窗口,VC编程中如何在界面上实现3D...
从网上下的 加入jpeg支持的CImg.h 图像库应用例子- 没有界面, 就几个语句,就可以实现图片的显示、在图片上绘图、处理鼠标输入等等 原作者邮件地址如下: bugzhao@sdu.edu.cn